python容器(列表&元組&字典&集合)
阿新 • • 發佈:2021-02-12
列表List
特點
- 有序(下標、索引位置、起始零、結束長度減一)
- 可重複
- 可變
構建
-
字面值
l = [1,] # 等價於 l = [1] l = [1,'python',true]
-
建構函式
l = list() #元組、range物件 l = list((1,2))#把元組變為可變的列表 l = list(range(1,11))
-
指令碼操作符
l = [1] + [1,2,3] l = [1,2] * 5
獲取
-
下標(注意越界問題)
l[0] l[-1] l[len(l)-1]
長度
len(l)
修改
l[0] = "python"
分片(仍為List)
l[:]#所有
l[0:]#所有
l[0:5]#左閉右開
l[0::2]#偶數,後一個:代表步長
l[-5:-1]#最後一個為-1
l[-1:-5:-1]#倒敘
抽取賦值
l = ['a','b','c','d','e','f']
l #['a','b','c','d','e','f']
l[1:3:1] = [1]#不匹配的丟棄
l #['a',1,'d','e','f']
l[1:3:1] = [1,2]#匹配的替換
l #['a',1,2,'e','f']
l[1:3:1] = [1,2,3]#連續空間超出範圍追加
l #['a',1,2,3,'e','f']
l[ 1:5:2] = [1,2,3]#不連續空間會報錯
l #error
常見方法
-
help(List)獲取 List 有關方法
-
#新增 l.append() #追加元素(列表作為元素) l.extend([1,2]) #追加列表中的元素至末尾 l.insert(10,'in')#在位置10插入元素'in' #刪除 l.remove([1,2,3])#移除元素 l.pop()#彈出元素 l.__delitem__(1)#刪除第一個下標為1的元素 del l[1] #根據下標刪除元素 l.clear()#清空列表 #修改 l[1] = 'update' #獲取 l.index(1)#第一個匹配項索引位置
元組Tuple
特點
- 有序(下標、索引位置起始零、結束長度減一)
- 可重複
- 不可變、安全性高
構建
-
字面值
t = (1,) # 若 t = (1) 則 type(t)為int,因為()有括號的含義 t = (1,'python',true) t = 1,'python',true#以逗號隔開預設為元組
-
建構函式
t = tuple() #列表、range( )函式 t = tuple([1,2])#安全性高,不可變 t = tuple(range(1,11))
-
指令碼操作符
t = (1) + (1,2,3)#元組不可變,但可以相加 t = (1,2) * 5
獲取
-
下標(注意越界問題)
t[0] t[-1] t[len(t)-1]
長度
len(t)
修改
- 不可修改
分片(與上述相同)
t[:]#所有
t[0:]#所有
t[0:5]#左閉右開
t[0::2]#偶數,後一個:代表步長
t[-5:-1]#最後一個為-1
t[-1:-5:-1]#倒敘
常見方法
-
help(tuple)獲取 Tuple 有關方法
#獲取 l.index(1)#第一個匹配項索引位置 t.count(1)#元素1在t中出現的次數 l.__contains__(1)#是否包含元素1 #遍歷 for x in t : print(x) for i in range(0,len(t)): print(t[i]) #刪除整個元組 del t
字典Dict
特點
- key - value 鍵值對
- key:鍵,不可重複(重複會覆蓋),不可變(支援hash演算法)(List不可用於鍵)
- value:值,可重複
- 無序
構建
-
key允許hash演算法,不可變,唯一
-
字面值
#{'鍵':'值',……:……,^…………} d = {'names':'Julius','sex':1,'adress':'ny' }
-
建構函式
d = dict([('names','Julius'),('sex',1),('adress':'ny')]) d = dict((['names','Julius'],['sex',1],['adress':'ny']) d = dict('names'='Julius','sex'=1,'adress'='ny')
常見方法
-
#新增 d['no'] = 10 # 增改'no':10 d = {}.fromkeys(['a','b','c'],[1,2,3])#批量建立'a':[1,2,3],'b':[1,2,3],'c':[1,2,3] d = {}.fromkeys(['a','b','c'],None)#批量建立'a':None,'b':None,'c':None #刪除 del d[key]#若無指定鍵則會出現異常 d.pop(key)#刪除同時,成功返回1,若無指定鍵則會出現錯誤 d.pop(key,-1)#避免錯誤,返回-1 d.popitem()#隨機刪除 #修改 d['no'] = 10 #存在覆蓋,不存在新增 d.__setitem__('key','value') d.update({1:'a',2:'b'})#存在則覆蓋,不存在則新增 #查詢(獲取value) 'key' in d#返回True Or False d['key']#若不存在,則會報錯 d['key'] if 'key' in d else 'notexist' d.get('key')#不存在,返回''(None) d.get('key','notexist')#自定義返回值 #獲取 d.keys()#返回set集合,獲取所有key值 d.values()#返回set集合,獲取所有value值 #遍歷 for k,v in d.items() : print(k,v)
集合Set
-
自帶去重
set([1,1,2,2,3]) ##set顯示[1,2,3]
構建
-
字面值
s = {'a','b','c',1,2,3,False}#去重,無序
-
建構函式
s = set(['a','b','c',1,2,3])#列表,去重 s = set(('a','b','c',1,2,3,2,3))#元組,去重 s = set({1:'a',2:'b'})#字典,僅保留key,去重
數學運算
#交集
s1 = s1 & s2
s1.intersection(s2)
#並集
s1 = s1 | s2
s1.union(s2)
#差集
s1 = s1 - s2
s1.difference(s2)
#對稱差集((s1-s2)|(s2-s1))
s1 = s1 ^ s2
s1.symmetric_differene(s2)
常見方法
-
#新增 s.add(1) #刪除 s.remove(1)#不存在會報錯 s.discard(1)#不存在不會報錯 rand = d.pop()#隨機彈出並返回一個元素 d.clear#清空 #包裝成定長集合,無add,remove方法 s = frozenset(('a','b','c',1,2,3,2,3)) #其他 d1 = d2.copy()#複製拷貝 d.__contains__(1)#是否包含
語句
- 二分枝簡寫:(分支語句1) if (布林表示式)else(分支語句2)
- type( )檢視資料型別