python集合的用法

python集合的用法

集合是个神马东西
{1,2,3,4}
1.就是一个无序的、可变的序列
2.集合中没有重复的元素,如同字典的键
3.集合中的数据元素有限制,必须是不可变的数据类型, 元组(元组中有可变类型的元素,这样的元组也不能作为集合的元素)、字符串可以作为集合元素,集合、列表、字典不可以作为集合的元素

  1. 创建集合

创建空集合

>>> s=set() #创建空集合>>> s={}
>>> s={} #不能创建空集合,创建出来的是空字典
>>> type(s)
<class 'dict'>
>>>s
{} #表示一个空字典
>>> s=set([]) #利用空列表创建空集合
>>> s
set() #表示一个空集合

直接赋值

>>>x={1,2,3,4,4}
>>>x
{1, 2, 3, 4} #自动去掉重复的元素
>>> s = {1,[1],3,4} #列表是可变数据类型,不能作为集合的元素
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

列表转集合

>>> s=set([1,2,3,4,4])#列表转集合,自动去掉重复元素
>>> s
{1, 2, 3, 4}

zip对象集合

>>> s=zip([1,2,3],[4,5,6])
>>> set(s)
{(2, 5), (3, 6), (1, 4)}
>>> s=zip([1,2,3], [[1,2],3,4])#元组(1,[1,2])中有list,不合法
>>> set(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

字典转集合

>>> s = dict(zip([1,2,3],[4,5,[1,2]]))
>>> s
{1: 4, 2: 5, 3: [1, 2]}
>>> set(s)#会把字典的键转成集合的元素,此时只要键的数据类型合法即可
{1, 2, 3}
>>> set(s.items())#此时要把(键,值)当作集合的元素,键和值的数据类型都要合法
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
  1. 集合元素的添加
>>> s = {1,2,3}
>>> s.add(4) #添加4
>>> s
{1, 2, 3, 4}
>>> s.add(3) #添加 3,3已经存在,不能再添加,但 python并不会报错
>>> s
{1, 2, 3, 4}
>>> s.update({3,4,5,6}) #将{3,4,5,6}中的 s没有的元素都添加到 s中
>>> s
{1, 2, 3, 4, 5, 6}
  1. 集合元素的删除
    (1)调用集合对象的pop()方法随机删除一个元素
>>> s={7,4,3}
>>> s.pop()
3#返回随机删除的元素
>>> s
{4, 7}#3被删了
>>> s.pop()
4
>>> s.pop()
7
>>> s.pop()#集合为空,再删就报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'pop from an empty set'

(2)使用集合对象的remove()方法删除指定元素

>>> s={7,4,3}
>>> s.remove(7)
>>> s
{3, 4}
>>> s.remove(9)#remove()删除集合中没有的元素会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 9

(3) 调用集合的discard()删除指定元素

>>> s={7,4,3}
>>> s.discard(7)
>>> s
{3, 4}
>>> s.discard(9)#discard()删集合中没有的元素不报错
>>> 
  1. 集合运算
>>> a={1,2,3}
>>> b={2,3,4}
>>> a|b #并集
{1, 2, 3, 4}
>>> a.union(b)
{1, 2, 3, 4}
>>> a&b #交集
{2, 3}
>>> a.intersection(b)
{2, 3}
>>> a-b #差集
{1}
>>> a.difference(b)
{1}
>>> a^b #对称差集
{1, 4}
>>> a.symmetric_difference(b)
{1, 4}
  1. 集合间的关系
>>> a={1,2,3,4}
>>> b={1,2,3,4}
>>> c={1,2,3}
>>> d={5,6,7}
>>> a > c # c是a的真子集
True
>>> a==c#a和c不相等
False
>>> a>=c #c是a的子集
True
>>> a==b #集合相等
True
>>> a>d #d不是a的真子集
False
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值