1. 程式人生 > >Python從入門到精通之Sixth!

Python從入門到精通之Sixth!

dict 集合 元素 去重 diff tro 清空 補集 拷貝

補充:enumerate 函數用於遍歷序列(元組tuple、列表list、字典dict)中的元素以及它們的下標:

>>> for i,j in enumerate((a,b,c)):
      print(i,j,end="")
0 a1 b 2c

Python 集合set

定義:由不同元素組成的無序的元組 形式:S = {‘H‘,‘E‘,‘L‘,‘L‘,‘O‘}或者S = set(‘HELLO‘)

set()函數可以把列表、元組等等轉換為集合 集合可以做到簡單去重的效果,也可以進行交差並等的集合運算。

集合的內置方法:

#add方法:把元素添加到集合
s = {1,2,4,5} s.add(3) #clear方法:清空集合 s.clear() #copy拷貝 s1 = s.copy() #pop方法:隨機刪除一個值 s = {1,2,3,4,5} s.pop() #remove方法:指定刪除,刪除元素不存在會報錯 s = {1,2,3,4,5,hello} s.remove(hello) #discard方法:指定刪除,刪除元素不存在不會報錯 s = {1,2,3,4,5,hello} s.discard(hello)

集合的運算:交、並、差

#求交集   2個方法:intersection 或 &
Linux = [a,1,2,3,b] Python = [a,5,3,6,4,c] linux_s = set(Linux) python_s = set(Python) print(python_s.intersection(linux_s)) print(python_s & linux_s)
#求並集 2個方法:union 或 | Linux = [a,1,2,3,b] Python = [a,5,3,6,4,c] a = set(Linux) b = set(Python) print(a.union(b)) print(a | b)
#求差集 2個方法:difference 或 -(減號) Linux = [a,1,2,3,b] Python = [a,5,3,6,4,c] a = set(Linux) b = set(Python) print(b-a) print(a-b) print(b.difference(a)) #b集合減去a集合 print(a.difference(b)) #a集合減去b集合
a.difference_update(b)  #a集合減去b集合並更新a集合,與上面作用沒什麽大的區別
 

#交差補集:兩集合並到一起,之後減去兩個共有的元素

#求交叉補集 兩種方法:symmetric_difference() 或 ^
Linux = [a,1,2,3,b]
Python = [a,5,3,6,4,c]
a = set(Linux)
b = set(Python)
print(a.symmetric_difference(b))
print(a ^ b)

集合運算補充:

#isdisjoint方法:如果兩個集合的交集不存在則為True,否則False
print(linux_s.isdisjoint(python_s))

#issubset()方法:如果s1是s2的子集,返回True
print(s1.issubset(s2))
#issuperset()方法:如果s1是s2的父集,返回True
print(s1.issuperset(s2))

#update更新,add只能添加一個值,而update可用於更新多個值(包括列表元組等等)
s1 = {1,2}
s2 = {1,2,3}
s1.update(s2)     ==========>{1,2,3}

#symmetric_difference_update方法:與symmetric_difference()交叉補集幾乎相同

#intersection_update:與交集幾乎相同

集合是可變的,定義不可變集合:s = frozenset()

不可變集合沒有add、remove等等的方法。

Python從入門到精通之Sixth!