元組 tuple
- 本質是一種有序集合
- 和list相似
- 元組是不可變的
- 用()建立
- 其中型別可以不同
- 如果一個元組中只有一個元素,在這個元素後面加一個逗號, 來消除歧義tuple5 = (100,)
- 修改元組
tuple13 = (1, [100, 200, 300, 400], 3)
print(tuple13)
tuple13[1][2] = 666
print(tuple13) # 表面上看,tuple的元素改變了,但實際上變得不是tuple的元素,是list的元素
- 刪除
del tuple1 #被直接刪除
- 資料型別轉換
tuple(list)
list(tuple)
字典
- 字典中的key必須唯一
- key值必須是不可變的資料型別:字串,元組,Number
- list可變,不能作為key使用
- value為任意資料型別,可以重複
- 字典的本質是一種無序集合
- 字典的訪問
print(dic1.get("hmm"))
# get獲取字典中的值,如果當前key值不存在,返回None,而常規訪問會Error
- 刪除
pop(key)
- 遍歷
for key in dict1.keys()
for values in dict1.values()
for key, values in dict1.items()
- 更新 dict1.update(dict2) 將 dict2中的鍵值對 更新到 dict1中
- dict與list相比:
dict:1、查詢及插入速度塊,不會隨著key及value的增加而變慢
2、需要佔用的記憶體大,記憶體浪費多
list:1、查詢及插入速度會隨著資料的增加而變慢
2、需要佔用的記憶體小,記憶體浪費少
案例:詞頻統計
提供了下面4個方法,箇中優劣,自行體會。
items = [`bobby`, `bobby`, `kate`, `tom`,`tom`,`tom`,`tom`]
dict1 = {}
for item in items:
if item not in dict1:
dict1[item] = 0
dict1[item] += 1
print(dict1)
for item in items:
dict1.setdefault(item,0)
dict1[item] += 1
print(dict1)
for item in items:
dict1[item] = dict1.setdefault(item,0) + 1
print(dict1)
for item in items:
try:
dict1[item] += 1
except:
dict1[item] = 1
print(dict1)
set集合
- 與dict相比,set是一組儲存key的集合,但不儲存value
- 本質:一個無序的及元素不重複的集合
set1 = set([1,2,3,4])
set2 = set([1,2,3,4,2,2,2,3,3,1,4,5,6,2,1]) #重複會被過濾
print(set2) # {1,2,3,4,5,6}
# tuple
set3 = set((1,2,3,2,1))
print(set3)
# dict
set4 = set({"a":1, "b":2, "c":3})
print(set4) # 只保留字典的key值 # {`a`,`b`,`c`}
dic5 = {"a":1, "b":2, "c":3}
set5 = set(dic5.values())
print(set5)
# 資料型別不匹配
# set6 = set(100)
# print(set6) # TypeError: `int` object is not iterable(迭代器)
# 迭代器就是一種集合資料型別
- 新增資料
add() #只新增不可變的資料型別 元組字串數字
update(iter) # list,tuple,string,dict(只有key)
- 刪除
remove()
- set不支援下標訪問
- 集合的操作
set10 = set([1,2,3,4,5])
set11 = set([4,5,6,7,8])
# 1、& 交集
set12 = set10 & set11
print(set12)
# 2、| 並集
set13 = set10 | set11
print(set13)
# 3、^ 補集
set14 = set10 ^ set11
print(set14)
- 不同資料型別的裝換
list-set
tuple->set
set->list
set->tuple
list->tuple
tuple->list
- 將list中的重複資料刪除可以用set
list1 = [1,2,3,6,3,2,1,1,1,9]
set1 = set(list1) # 過濾重複資料
list2 = list(set1)
print(list2)
列舉遍歷
- 可以將下標及元素同時遍歷
for i in enumerate(list1):
print(i)
for index,data in enumerate(list1):
print(index, data)
set1 = set([1,2,3]) # 讓set也能有下標
for index,data in enumerate(set1):
print(index, data)