Python从入门到精通之Sixth!

补充: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等等的方法。

猜你喜欢

转载自www.cnblogs.com/xtznb/p/10403674.html