Python set 集合方法

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值