DAY6 元組、字典與集合
定義:t1 = (1, 2) # t1 = tuple((1,2))
特點:有序存儲、可存放多個數據、不可變(內部可以包含可變對象,可變對象已久可變)
應用場景:將不允許操作的列表可以轉化為元組,將允許操作的元組轉化為列表
1.元組的定義
t1 = () # t1 = tuple()
print(t1,type(t1)) # () <class ‘tuple‘>
1.1 tuple() # 參數為for可以循環的對象(可叠代對象)
例如:t2 = tuple("123")
print(t2, type(t2)) # (‘1‘, ‘2‘, ‘3‘) <class ‘tuple‘>
t3 = tuple([1, 2, 3])
print(t3, type(t3)) # (1, 2, 3) <class ‘tuple‘>
t4 = tuple((7, 8, 9))
print(t4, type(t4)) # (7, 8, 9) <class ‘tuple‘>
1.2 定義一個只有一個元素的元組
t1 = tuple(1, )
t1 = tuple([1])
2.元組的操作
1.索引取值
t = (1, 2, 3, 2, 3, 2)
print(t[1])
print(t[-2])
2.切片
nt = t[:-1:]
3.長度(item元素個數)
print(len(t))
4.元組內置方法
print(t.count(2)) # 該數據集合可以存放相同數據
print(t.index(2, 0, 3))
d1 = {‘a‘: 10, ‘b‘: 20} # d1 = dict({‘a‘: 10, ‘b‘: 20})
特點:無序,存放多個值,可變 => 通過key取值
1.聲明
dict的key:可以為所以不可變類型:int float tuple str bool None, 一般就采用字符串
key具有唯一性(重復會覆蓋舊值),value可以重復
2.字典的增刪改查
字典無序存儲數據,無索引與切片,用key來取值
2.1 增、改
d1[key] = value: key存在就是改,不存在就是增
update({‘a‘: 100, ‘c‘: 300}): key有更新,無新增
2.2 查
d1[key]: 取,如果key不存在就報錯,所以用get(key, defalut)
2.3 刪
pop(key): 根據key刪且返回對應value
3.get取值
dic = {‘a‘: 10, ‘b‘: 20}
print(dic[‘c‘]) # KeyError
res = dic.get(‘c‘) # 擁有默認值,None,可以避免錯誤
print(res) # None
res = dic.get(‘d‘, ‘key不存在‘) # 可以自定義默認值
print(res) # key不存在
4.復制
newDic = dic.copy()
print(newDic)
淺copy:只做第一層copy,內部的成員地址還是原來的地址
5.隨機刪除
dic.popitem()
返回值是(key,value)
6.定義一個空字典
第一個參數:keys:list|tuple|str,第二個參數:統一的默認value
d10 = {}.fromkeys([‘a‘, ‘b‘, ‘c‘], ‘‘)
print(d10) # {‘a‘: ‘‘, ‘b‘: ‘‘, ‘c‘: ‘‘}
7.
key存在,不操作,不存在設置key=default
dic.setDefault(key, default)
1.定義
s1 = set() # {}代表空字典,用set()來創建空集合
s2 = set({1, 2, 3})
2.重點:數據具有唯一性
1.單列數據集合:str,list,tuple,set 雙列:dict
2.無序存儲:無key無index,無法取值
3.可變數據類型,內部可以存放任意類型數據,但數據具有唯一性
3.內置方法與使用 - 集合間的運算 (& | ^ - > < ==)
p_set = {‘a‘, ‘b‘, ‘c‘, ‘egon‘}
l_set = {‘x‘, ‘y‘, ‘z‘, ‘egon‘}
3.1交集 &
res = p_set & l_set
print(res)
res = p_set.intersection(l_set)
print(res) # {‘egon‘}
3.2並集
res = p_set | l_set
print(res)
res = p_set.union(l_set)
print(res) # {‘z‘, ‘c‘, ‘y‘, ‘x‘, ‘b‘, ‘a‘, ‘egon‘}
3.3差集
res = p_set - l_set
print(res) # {‘a‘, ‘b‘, ‘c‘}
res = l_set.difference(p_set)
print(res) # {‘x‘, ‘z‘, ‘y‘}
3.4對稱差集
res = p_set ^ l_set
print(res)
res = p_set.symmetric_difference(l_set)
print(res) # {‘y‘, ‘a‘, ‘b‘, ‘x‘, ‘z‘, ‘c‘}
3.5 增、刪
1.添加
s = set()
s.add(‘abc‘)
s.add(‘xyz‘)
2.刪
2.1 res = s.pop() # 隨機刪除一個ele元素
2.2 if ‘xyz‘ in s:
s.remove(‘xyz‘) # 有ele刪除,無ele拋異常
4.了解
sup_set = {1, 2, 3, 4, 5}
sub_set = {1, 2, 3}
temp_set = {3, 2, 1}
flag_set = {7, 8, 9}
print(sup_set > sub_set) # True
print(sup_set < sub_set) # False
print(temp_set == sub_set) # True
# 兩個set是否沒有交集
res = flag_set.isdisjoint(temp_set) # True
DAY6 元組、字典與集合