python中的set

集合在python中算是比较年轻的数据结构,同时使用率也偏低,但是set却是python的内置类型,下面详细总结了一下集合常用的方法及特性。

导语

一般来讲集合有两种形态,set和frozenset,两种结构的区别在于set是不可哈希的,而frozenset是可哈希的,但是应该注意的是set中包含的元素必须是可哈希的,所以,set 中的元素可以是frozenset。

set的特性

  • set中的元素是不可重复的,利用这项特性可以快速对容器中的元素进行去重
>>>my_list1 = [1, 3, 3, 2, 3, 2, 1]
>>>my_list2 = list(set(my_list1))
>>>my_list2
[1, 2, 3]
  • 集合推导
>>>set1 = {i for i in range(10)}
>>>set1
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  • 集合之间的数学运算
#交集
a & b                    # a和b的交集,a、b必须都是集合
b & a                    # a和b的反向交集, a、b必须都是集合
a.intersection(iteritem, ....)              # 集合a和任意可迭代对象的交集
a &= b                  # 把a更新为a和b的交集,a、b必须都是集合
a.intersection_update(iteritem, ....)         # 把a更新为集合a和任意可迭代对象的交集

#并集
a | b                    # a和b的并集,a、b必须都是集合
b | a                    # a和b的反向并集, a、b必须都是集合
a.union(iteritem, ....)              # 集合a和任意可迭代对象的并集
a |= b                  # 把a更新为a和b的并集,a、b必须都是集合
a.update(iteritem, ....)         # 把a更新为集合a和任意可迭代对象的并集

#差集
a - b                    # a和b的差集,a、b必须都是集合
b - a                    # a和b的反向差集, a、b必须都是集合
a.difference(iteritem, ....)              # 集合a和任意可迭代对象的差集
a -= b                  # 把a更新为a和b的差集,a、b必须都是集合
a.difference_update(iteritem, ....)         # 把a更新为集合a和任意可迭代对象的差集

#差集
a ^ b                    # a和b的对称差集,a、b必须都是集合
b ^ a                    # a和b的反向对称差集, a、b必须都是集合
a.symmetric_difference(iteritem, ....)              # 集合a和任意可迭代对象的反向差集
a ^= b                  # 把a更新为a和b的反向差集,a、b必须都是集合
a.symmetric_difference_update(iteritem, ....)         # 把a更新为集合a和任意可迭代对象的反向差集

集合的比较运算符,返回值为不二类型

a.isdisjoint(b)           # 查看a和b是否不相交
a in b                       # 元素a是否属于b
a <= b                     # 元素a是否是b的子集
a < b                       # 元素a是否是b的真子集
a >= b                     # 元素a是否是b的父集
a > b                       # 元素a是否是b的真父集

集合的其他方法

a.add(b)                   # 把元素b添加到集合a中
a.clear()                   # 移除集合a中的元素
a.copy()                   # 对集合a进行浅拷贝
a.discard(b)             # 集合a中如果有b的话,将b移除
a.__iter__()              # 返回a的迭代器
a.__len__()               # 返回集合a的长度
a.pop()                     # 从集合中移除一个元素作为返回值,如果集合为空,抛出KeyError
a.remove(b)                     # 从集合中移除元素b,如果集合为空,抛出KeyError
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值