参考链接: Python set集合 intersection()
set
#无重复,可变–>元素的去重 #无序、唯一、可变。集合中的元素需要可哈希的,元素不可以是可变对象。 #内置函数len(),max(),min(),tuple(),enumerate()
#====================set方法======================
t= set(('a',1,'b','c','d'))
t.add('x')
# 添加一项
s.update([10,37,42])
# 在s中添加多项
t.remove('H')
#删除一项
len(s)
#set 的长度
x in s
#测试 x 是否是 s 的成员
x not in s
#测试 x 是否不是 s 的成员
s.issubset(t)
s <= t
#测试是否 s 中的每一个元素都在 t 中
s.issuperset(t)
s >= t
#测试是否 t 中的每一个元素都在 s 中
s.union(t)
s | t
#返回一个新的 set 包含 s 和 t 中的每一个元素
s.intersection(t)
s & t
#返回一个新的 set 包含 s 和 t 中的公共元素
s.difference(t)
s - t
#返回一个新的 set 包含 s 中有但是 t 中没有的元素
s.symmetric_difference(t)
s ^ t
#返回一个新的 set 包含 s 和 t 中不重复的元素
s.copy()
#返回 set “s”的一个浅复制
#浅复制和深复制(适用所有)----------------
print('===浅复制====')
set1 = [10000,2,3,[1,2]]
set2 = set1.copy()
print(id(set1),id(set2))
print(id(set1[0]),id(set2[0]))
#说明:浅复制只是复制了一层
print('===深复制====')
import copy
set3 = copy.deepcopy(set1)
print(id(set1),id(set3))
print(id(set1[0]),id(set3[0]))
#深复制:复制了所有的层,除了最底层使用了一样9的数据
扩展
下面这个表列出了对于 Set 可用二对于 ImmutableSet(不可变集合) 不可用的运算:
介绍格式:
运算符(voperator)等价于运算结果
s.update(t)
s |= t
#返回增加了 set “t”中元素后的 set “s”
s.intersection_update(t)
s &= t
#返回只保留含有 set “t”中元素的 set “s”
s.difference_update(t)
s -= t
#返回删除了 set “t”中含有的元素后的 set “s”
s.symmetric_difference_update(t)
s ^= t
#返回含有 set “t”或者 set “s”中有而不是两者都有的元素的 set “s”
s.add(x)
#向 set “s”中增加元素 x
s.remove(x)
#从 set “s”中删除元素 x, 如果不存在则引发 KeyError
s.discard(x)
#如果在 set “s”中存在元素 x, 则删除
s.pop()
#删除并且返回 set “s”中的一个不确定的元素, 如果为空则引发 KeyError
s.clear()
#删除 set “s”中的所有元素
后期新增知识点(注意点)
1、使用set()强制转换类型时,转换后的集合内容是升序排列的,虽然集合是可变的,但是输出是升序的。
>>> set([6,3,2,5,1,6,2])
{1, 2, 3, 5, 6}
>>> set((1,2,5,6,2,4,7))
{1, 2, 4, 5, 6, 7}
>>> set((5,3,5,2,3,1,6))
{1, 2, 3, 5, 6}
>>> set({3:5,2:1,6:2,2:4,9:1,4:2})
{2, 3, 4, 6, 9}
2、总结一下set集合之间的运算符>,>=,<,<=的意义
A < B #判断A是否是B的真子集
A <= B #判断A是否是B的子集
A > B #判断B是否是A的真子集
A >= B #判断B是否是A的子集
eg:
>>> A = {1,2,3}
>>> B = {1,2,3}
>>> C ={1,2,3,4}
>>> A < B
False
>>> A <= B
True
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。