集合(没有改操作)
可变的数据类型,但是里面的元素必须是不可变(元组,bool,int,str)的数据类型,无序,不重复
增add
set1 = {'mary','jack'} set1.add('higj') print(set1)#{'jack', 'mary', 'higj'}-----注意:无序的
改update
set1.update('ghj')#{'g', 'mary', 'h', 'jack', 'j'} print(set1)
删除pop、remove、clear
set1.pop()#随机删除 print(set1)#{'mary'} set1.remove('mary')#按照元素删除 print(set1)#{'jack'} set1.clear()#清空集合 print(set1)#set()
discard()用于从集合中删除一个特定的元素,如果元素不存在于这个集合中则忽略该操作
set32={1,2,3,4} set32.discard(4) print(set32) #{1,2,3} set32.discard(5) print(set32) #{1,2,3}
查
for i in set1: print(i)
集合的交集、并集、反交集、差集等
set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 & set2)#求交集,结果{4, 5} print(set1.intersection(set2))#功能同上 print(set1 | set2)#求并集,结果{1, 2, 3, 4, 5, 6, 7, 8} print(set1.union(set2))#功能同上 print(set1 ^ set2)#求反交集{1, 2, 3, 6, 7, 8} print(set1 - set2)#求差集(即set1独有的){1, 2, 3} set1 = {1,2,3} set2 = {1,2,3,4,5,6} print(set1 < set2)#set1是否包含于set2,结果为True print(set1.issubset(set2))
集合去重
li = [1,2,3,44,2,43,2] set = set(li) print(set)#{1, 2, 3, 43, 44} #集合强制转换列表 li = list(set) print(li)#[1, 2, 3, 43, 44]
将set从可变数据类型转成不可变数据类型
s = frozenset('marry') print(s,type(s))#frozenset({'y', 'm', 'r', 'a'}) <class 'frozenset'> #被冻住的s只可以遍历(同样是无序),因为是不可变 for i in s: print(i)
序列解包
在实际开发中,序列解包是非常重要和常用的一个功能,可以使用非常简洁的形式完成复杂的功能,大幅度提高了代码的可读性。
序列解包也可以用于列表和字典,但是对字典使用时,默认是对字典“键”进行操作,如果需要对“键:值”对进行操作,需要使用字典的items()方法明确指定。如果需要对字典的的“值”进行操作,需要使用字典的values()方法明确指定。
序列解包的集合操作,简单示例如下:
注意:在调用函数时,在实参前面加上一个星号(*)也可以进行序列解包,从而实现将序列中元素值依次传递给相同数量的形参。