9-25 集合

集合(没有改操作)

可变的数据类型,但是里面的元素必须是不可变(元组,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()方法明确指定。

序列解包的集合操作,简单示例如下:

 注意:在调用函数时,在实参前面加上一个星号(*)也可以进行序列解包,从而实现将序列中元素值依次传递给相同数量的形参。

 

 

posted @ 2018-09-25 22:25  大脸猫12581  阅读(143)  评论(0编辑  收藏  举报