python集合(set)类型的基本操作

集合的创建

  • 集合是一个无序且不重复的元素序列,可以使用{}和set()函数来创建集合,但创建一个空的集合必须用set()函数而不是{},因为用{}创建的是空的字典。
>>> a = {1,2,3}     # 用{}创建集合
>>> a
{1, 2, 3}
>>> type(a)
<class 'set'>

>>> b = set([1,2,4])    # 使用函数set()创建集合
>>> b
{1, 2, 4}
>>> type(b)
<class 'set'>

集合主要的作用

  • 去重
  • 关系运算:并集,交集,差集,对称差集

去重

>>> list_a = [1,1,2,2,3,3,4] #一个有重复元素的列表
>>> b = set(list_a) #把列表转换成集合
>>> b
{1, 2, 3, 4}  # 结果已经去除重复元素

关系运算

  • 并集
a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])
c = a | b   # 把a,b两个集合内的元素去重后合并,返回一个新的集合
d = a.union(b)  # 同上
print(c)
print(d)

结果

{1, 2, 3, 4, 5, 6}
{1, 2, 3, 4, 5, 6}
a.update(b) # 同 a |= b,把合并后的集合返回到a,也就是修改了原集合a的元素
print(a)

结果

{1, 2, 3, 4, 5, 6}
  • 交集
a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])
c = a & b   # 取a,b两个集合都有的元素,返回一个新的集合
d = a.intersection(b) # 同上
print(c)
print(d)

结果

{3, 4}
{3, 4}
# a.intersection_update(b)    # 取a,b两个集合都有的元素,把结果返回到集合a,也就是修改了原集合a
a &= b  # 同上
print(a)

结果

{3, 4}
  • 差集
a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])
c = a - b   # 取在集合a中有的,但集合b中没有的元素,返回一个新的集合
d = a.difference(b)  # 同上
print(c)
print(d)

结果

{1, 2}
{1, 2}
# a -= b  # 取在集合a中有的,但集合b中没有的元素,把结果返回到集合a中,也就是修改了原集合a
a.difference_update(b)  # 同上
print(a)

结果

{1, 2}
  • 对称差集也叫反向交集
a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])
c = a ^ b   # 元素中集合a或b中,但不同时在这两个集合中,返回一个新的集合。
d = a.symmetric_difference(b)   # 同上
print(c)
print(d)

结果

{1, 2, 5, 6}
{1, 2, 5, 6}
# a ^= b    # 元素中集合a或b中,但不同时在这两个集合中,把结果返回到集合a,也就是修改了原集合a
a.symmetric_difference_update(b)    # 同上
print(a)

结果

{1, 2, 5, 6}

集合的基本函数操作

  • 添加元素
>>> a = set(['java','python','C++'])
>>> a.add('C#') # 添加一个新的元素
>>> a
{'java', 'C#', 'C++', 'python'}
>>> a.add('java') # 集合里已存在该元素,则不做任何修改
>>> a
{'java', 'C#', 'C++', 'python'}

>>> a.update([1,2]) #update可以添加多个元素
>>> a
{1, 2, 'C++', 'python', 'C#', 'java'}
  • 删除元素
>>> a = set(['java','python','C++'])
>>> a.remove('java') #函数remove()删除元素java
>>> a
{'C++', 'python'}


>>> a.remove('c')   # 集合中没有的元素会报错
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    a.remove('c')
KeyError: 'c'


>>> a = set(['java','python','C++'])
>>> a.discard('java') # 函数discard()删除元素
>>> a
{'C++', 'python'}
>>> a.discard('c')  #discard删除集合中没有的元素不会报错
>>> a
{'C++', 'python'}


>>> a = set(['java','python','C++'])
>>> a.pop() # 函数pop()随机删除集合中的元素,并返回该元素。
'java'
>>> a
{'C++', 'python'}

set集合的 pop() 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。

  • 计算集合元素个数
>>> a = set(['java','python','C++'])
>>> len(a)
3
  • 清空集合元素
>>> a = set(['java','python','C++'])
>>> a.clear()
>>> a
set()
  • 判断元素是否在集合中存在
>>> a = set(['java','python','C++'])

>>> 'java' in a
True
>>> 'c' in a
False

>>> 'java' not in a
False
>>> 'c' not in a
True
  • 超集,子集,相同
>>> a = set([1,2,3,4])
>>> b = set([2,3])

>>> a.issuperset(b) # 判断a是否是b的超集
True

>>> b.issubset(a) # 判断b是否是a的子集
True

# 上面的函数也可以用>.<来表示
>>> a > b
True
>>> a < b
False
>>> 

>>> a == b
False
>>> a != b
True
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值