1. 程式人生 > >python基礎(元組、字典、集合)

python基礎(元組、字典、集合)

tuple 元組

,其實跟列表差不多,存一組數,一旦建立,不能修改。叫做只讀列表 tuple1 = (1,2) tuple2 =1,2 tuple2 = 1, tuple2 = tuple([123]), 元組和列表的區別 特性: 不可變 元組本身不可變(不能利用索引修改裡面元素的數值),如果元組中包含其他可變元素,那麼這些可變元素可以改變 操作: Tuple.index(self, value, start=None, stop=None) Tuple. count(self, value) Tuple.[:]

字典{用大括號}

採用鍵值對的形式進行儲存 字典 特性 1.key-value結構 2.key必須為不可變資料型別、必須唯一,不可位列表 3.可存放任意多值、可修改、可以不唯一 4.無序 5.查詢速度快 a = {} 或者 a = dict() 列印字典中某個數值的時候,使用dict[x]。使用的是中括號,x代表的是鍵的名字. 兩個重要的點需要記住: 1)不允許同一個鍵出現兩次。建立時如果同一個鍵被賦值兩次,後一個值會被記住(後一個把前一個相同的鍵對應的數值覆蓋)

2)鍵必須不可變,所以可以用數字,字串或元組充當,而用列表就不行。 注意:1字典的鍵值是"只讀"的,所以不能對鍵和值分別進行初始化 2字典是支援無限極巢狀的 操作: 1.Dict.fromkeys(seq, value) 將建立一個新字典,序列中的每個元素成為一個新鍵,鍵對應的數值是value,如果value不指定的話,則新的字典對應的值是None 2.Dict.get(key, default=None) 返回key對應到值,若不存在,返回None 3.dict[x]返回x對應的數值,若不存在,報錯KeyError 4.dict.keys() 返回字典中所有的鍵 可以使用 list() 來轉換為列表,列表為字典中的所有鍵。 dict.values() 返回字典中所有的值 可以使用 list() 來轉換為列表,列表為字典中的所有值。 5.dict. items()返回可遍歷的(鍵, 值) 元組陣列 6…增加 1)修改值:a[key] = value 如果key存在於字典,則修改成新的value,如果不存在,則增加一個key,對應的值是value 2)dict. setdefault(key, default=None) 如果鍵不已經存在於字典中,將會新增鍵預設值是None。如果存在則不修改寄存的值 3) update(dict2) 字典引數 dict2 的 key/value(鍵/值) 對更新到字典 dict 裡,如果存在同樣的key,則覆蓋原來的key 7.刪除

  1. dict. popitem()隨機返回並刪除字典中的一對鍵和值
  2. dict. pop(key[,default]) 刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。 遍歷時候推薦使用一下方法不推薦使用 dict.items()方法: For I in dict.keys(); Print(“{} => {}”.format(I,dict[i])) 兩者區別:dict.items()將元素轉黃成元組在列印,當資料量過大時消耗記憶體過大,耗時長。

集合

集合(set)是一個無序不重複元素的序列。 特徵:

  1. 確定性
  2. 互異性(去重)
  3. 無序性(集合中的元素沒有先後之分,(1,2,3)和(2,3,1)是一樣的)
  4. 整數,浮點數,布林值,複數,字串,元組,冰凍集合,但是不能有列表 定義: parame = {value01,value02,…} parame = set()rd a = set((“hello”)) print(a) a = set(“hello”) print(a) {‘o’, ‘l’, ‘h’, ‘e’} {‘o’, ‘l’, ‘h’, ‘e’} 建立一個含有一個元素的集合   a = set((“hello”,)) print(a) 實行結果:{‘hello’} 減法:a – b: 只找集合a中包含元素 a = set(“qwer123”) b = set(“qwcd1”) print(a - b) 實行結果:{‘3’, ‘r’, ‘2’, ‘e’} a | b: 集合a或b中包含的所有元素 a = set(“qwer123”) b = set(“qwcd1”) print(a | b) 實行結果:{‘2’, ‘r’, ‘3’, ‘c’, ‘e’, ‘d’, ‘1’, ‘w’, ‘q’} a & b:集合a和b中都包含了的元素 a = set(“qwer123”) b = set(“qwcd1”) print(a & b) 實行結果:{‘1’, ‘w’, ‘q’} a ^ b:不同時包含於a和b的元素 a = set(“qwer123”) b = set(“qwcd1”) print(a ^ b) 實行結果:{‘e’, ‘3’, ‘2’, ‘r’, ‘d’, ‘c’}

增加集合:

  1. s.add( x ) 將元素 x 新增到集合 s 中,如果元素已存在,則不進行任何操作。
  2. s.update( x ) 還有一個方法,也可以新增元素,且引數可以是列表,元組,字典. x 可以有多個,用逗號分開。(二維列表為什麼不能新增?) s.update( {“字串”} ) 將字串新增到集合中,有重複的會忽略。 s.update( “字串” ) 將字串拆分單個字元後,然後再一個個新增到集合中,有重複的會忽略。 刪除: 1.s.remove( x ) 將元素 x 新增到集合 s 中移除,如果元素不存在,則會發生錯誤。
  3. s.discard( x ) 此外還有一個方法也是移除集合中的元素,且如果元素不存在,不會發生錯誤。(是否只能刪除一個元素,而列表和元祖等刪除就發生錯誤) a.discard([2, 3]) TypeError: unhashable type: ‘list’
  4. s.pop() 隨機刪除集合中的一個元素(沒有隨機刪除,只是刪除了第一個元素) 其他:
  5. len(s) 求集合的長度
  6. s.clear() 清空集合
  7. x in s 判斷元素是否在集合中存在 difference()

4.差集 格式:集合1.difference(集合2) 返回值:集合 操作:獲取存在於集合1但是不存在與集合2中的資料的集合 difference_update()

5.差集 更新 格式:集合1.difference(集合2) 返回值:無 直接將結果賦值給集合1 操作:獲取存在於集合1但是不存在與集合2中的資料的集合 intersection()

6.交集 格式:集合1.intersection(集合2) 返回值:集合 操作:獲取即存在於集合1又存在於集合2中的資料組成的集合 intersection_update()

7.交集更新 格式:集合1.intersection_update(集合2) 返回值:None 直接將結果賦值給集合1 操作:獲取即存在於集合1又存在於集合2中的資料組成的集合 union()

8.並集 格式:集合1.union(集合2) 返回值:集合 操作:將集合1和集合2中所有資料新建一個集合(去重) update()

9.並集更新 格式:集合1.update(集合2) 返回值:無 直接將結果賦值給集合1 操作:將集合1和集合2中所有資料新建一個集合(去重) issuperset()

10.檢測一個集合是不是另外一個集合的超集 格式:集合1.issuperset(集合2) 返回值:布林值 issubset()

11.檢測一個集合是不是另外一個集合的子集 格式:集合1.issubset(集合2) 返回值:布林值 issubset

isdisjoint()

11.檢測2個集合是否不相交 格式:集合1.isdisjoint(集合) 返回值:布林值 symmetric_difference()

12.對稱差集操作 格式:集合1.symmetric_difference(集合2) 返回值:集合 操作:將集合1和集合2不相交的部分取出組成的新的集合 symmetric_difference_update()

13.對稱差集更新操作 格式:集合1.symmetric_difference(集合2) 返回值:None 直接將結果賦值給集合1 操作:將集合1和集合2不相交的部分取出組成的新的集合 注意:集合可以有任意數量的元素,它們可以是不同的型別(例如:數字、元組、字串等)。但是,集合不能有可變元素(例如:列表、集合或字典) 冰凍集合/固定集合 frozenset 冰凍集合就是一旦建立,不可以在進行任何修改的集合。 建立空的冰凍集合 變數 = frozenset() 建立多個元素的集合 變數 = frozenset(容器類資料) 冰凍集合的遍歷 for 變數 in 冰凍集合: 使用變數 推導式: 普通的集合推導式 變數={i for i in 集合} 帶有判斷條件的推導式 變數={i for i in 集合 if} 多迴圈推導式 變數 = {i+j for i in 集合1 for j in 集合2} 帶有判斷條件的多迴圈推導式 變數 = {i+j for i in 集合1 for j in 集合2 if 條件表示式}