數(shù)組、多維數(shù)組
數(shù)組聲明:
stus = ["曾若天","吳康飛","劉慧杰" ]
新增:
stus.append("candy")
stus.append("李雪松")
stus.insert(0,"趙瑩瑩")
stus.insert(2,"李興培")
insert中,0是在數(shù)組中的索引位置,“”添加的內(nèi)容
修改:
把stus“111”修改為鄧金嬌
stus[2] ="python"
# stu = "111"
# if stu in stus:
#? ? index = stus.index(stu) #如果查找不存在元素,會(huì)報(bào)錯(cuò)
#? ? stus[index] = "鄧金嬌"
#? ? print(stus)
刪除:
stus.append("candy")
print(stus)
# stus.pop()? #刪除末尾的元素
# stus.pop(0)#刪除指定下標(biāo)的
# stus.remove("candy")#刪除指定的元素,只刪除第一個(gè)
# del stus[0]
查找:
nums = [82,23,235,236,121,1,0,3,25,26]
stus.count("candy") ??#查找元素出現(xiàn)的次數(shù)
nums.sort()#排序,默認(rèn)是升序
nums.sort(reverse=True)#排序,默認(rèn)是升序,會(huì)改變?cè)瓉韑ist的值
# nums.reverse()#反轉(zhuǎn)list,會(huì)改變?cè)瓉韑ist的值
# stus.clear()#清空list
stus.extend(nums)#把另外一個(gè)list里面的元素都加入到一個(gè)list里面
多維數(shù)組:
l = [1,2,3,4,5,6,[7,8,9,10,11]]#2維數(shù)組
l2 = [1,2,3,4,5,6,
[7,8,9,10,11,["zengruotian",'abc']
]
]#3維數(shù)組
print(l[-1][3]) 數(shù)組下標(biāo)從0開始,-1是指數(shù)組的最后一位
print(l2[-1][-1][0])
切片
切片用來拆分讀取數(shù)組的數(shù)據(jù),切片并不會(huì)改變正在操作的列表,切片返回的是其子列表,返回的是一個(gè)新的棧的拷貝副本。
切片的索引有非常有用的默認(rèn)值;省略的第一個(gè)索引默認(rèn)為零,省略的第二個(gè)索引默認(rèn)為切片的索引的大小,如果是字符串,則為字符串大小。
#切片就是list范圍取值的一種方式
#顧頭不顧尾
# li = list(range(1,10))
# print(li)
# print(li[0:3]) #0:3
# print(li[:3]) #0:3
# print(li[1:3]) #0:3
# print(li[:]) #0:3
# print(li[0:11:2]) #開始:結(jié)束的索引:步長(zhǎng)(隔幾個(gè)取一次)
# print(li[-1:-5:-1])#負(fù)的是從右向左取值,這時(shí)候步長(zhǎng)應(yīng)該也要是負(fù)的,不然取不到數(shù)值
# print(li[::-1])
>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> # 替換某些值
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
>>> # 現(xiàn)在移除他們
>>> letters[2:5] = []
>>> letters
['a', 'b', 'f', 'g']
>>> # 通過替換所有元素為空列表來清空這個(gè)列表
>>> letters[:] = []>>> letters
[]
字典、字典嵌套
字典是無序的鍵值對(duì)(key:value)集合,同一個(gè)字典內(nèi)的鍵必須是互不相同的。一對(duì)大括號(hào)?{}?創(chuàng)建一個(gè)空字典。
創(chuàng)建:
student_info = {
"addr":"北京",
"name":"曾若天",
"age":18,
"high":180,
"tizhong":150,
}
新增:
# student_info["age"] = 19
# student_info["money"] = 300000
許多時(shí)候我們需要往字典中的元素添加數(shù)據(jù),我們首先要判斷這個(gè)元素是否存在,不存在則創(chuàng)建一個(gè)默認(rèn)值。如果在循環(huán)里執(zhí)行這個(gè)操作,每次迭代都需要判斷一次,降低程序性能。
我們可以使用?dict.setdefault(key, default)?更有效率的完成這個(gè)事情。
>>> data = {}
>>> data.setdefault('names', []).append('Ruby')
# student_info.setdefault("car","bmw")
#如果是已經(jīng)存在的key,setdefault不會(huì)修改已有的值
修改:
student_info["age"] =19
取值:
# print(student_info["name"])
# print(student_info["age"])
# print(student_info.get("addr"))
# print(student_info.get("tizhong"))
刪除:
# student_info.pop("age")
# del student_info["age"]
# student_info.popitem() #刪除最后一個(gè)元素
其他的方法:
# student_info.clear() #清空
# d = {"phone":110}
# student_info.update(d) #合并兩個(gè)字典
# print("name" in student_info.keys())
# print("name" in student_info)#直接用in判斷的話,就判斷這個(gè)key是否存在
#student_info.has_key("name")#python2里面有,python3里面沒有
# print(student_info)
# for key in student_info:#直接循環(huán)字典,每次取的是字典的key,比較高效的方式
#? ? value = student_info[key]
#? ? value2 = student_info.get(key)
#? ? print("%s -> %s" %(key,value))
#? ? print("%s -> %s" %(key,value2))
#
字典嵌套
元組
元組是由數(shù)個(gè)逗號(hào)分割的值組成。
#tuple
l = [1,2,3]
t = (1,2,3)
print(t[0])
元組是不可變類型,這意味著你不能在元組內(nèi)刪除或添加或編輯任何值。如果你嘗試這些操作,將會(huì)出錯(cuò)
>>> a = (1, 2, 3, 4)
>>> del a[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
通過內(nèi)建函數(shù)?type()?你可以知道任意變量的數(shù)據(jù)類型。
>>> type(len)
<class'builtin_function_or_method'>
集合:
#set 集合天生可以去重,集合是無序的
s = {1,2,3,3,4,4,5,6,6}
s1 = {1,2,3,5}
集合數(shù)組互轉(zhuǎn)
# print(list(set(l)))?
# s.add(5)#添加元素
# s.update({7,8,9})
集合add、update的區(qū)別
1、從可添加的元素來說,add只可添加不可變的元素,如數(shù)字,元組,字符串,否則會(huì)報(bào)錯(cuò),而update()可以添加字符串、列表、元組、字典等可迭代的元素,若添加數(shù)字類型,也會(huì)報(bào)錯(cuò)。

2、從添加的結(jié)果來看,add是把元素整體性的添加進(jìn)去,update()會(huì)把元素拆分之后再添加進(jìn)去
s2 = {7,8}
s2.add('123')#添加元素
s2.update('123')
print(s2)

s.pop()????????刪除第一個(gè)元素?
交集、并集、差集
print(s.intersection(s1))#交集
print(s & s1)
print(s.union(s1).union(s2))#并集
print(s | s1 | s2)
print(s.difference(s1))#差集,前邊集合有,但是后邊集合里邊沒有的元素的集合,具有局限性,只能s的元素?cái)?shù)大于s1,否則輸出空集合set()
print(s - s1)
# print(s.symmetric_difference(s1))# 對(duì)稱差集? 交集之外的元素,對(duì)于元素個(gè)數(shù)沒有要求,都會(huì)輸出差集。
# print(s ^ s1)
# for i in l:
#? ? if i %2 != 0:
#? ? ? ? l.remove(i)
#? ? ? ? print(l)
list1 = l
# l.clear()