Python——集合

集合(set)是一个无序不重复元素的序列。

1. 创建集合

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式:

parame = {value01,value02,...}
或者
set(value)

>>> set0 = {1,2,3}                      # 整形的集合
>>> set0
{1, 2, 3}
>>>
>>> set0 = {1.0, 'Python', (1, 2, 3)}   # 混合类型的集合
>>>
>>> set0 = set(['P', 'y'])              # 从列表创建
>>> set0
{'P', 'y'}
>>>
>>>
>>> set0 = {1, 2, [3, 4]}               # 不能有可变元素
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>>
>>> d = {}                              # 空字典
>>> type(d)
<class 'dict'>
>>>
>>>
>>> s = set()                           # 空集合
>>> type(s)
<class 'set'>

 

2. 集合特性: 

  • {}大括号组织起来
  • 无序性
  • 互异性
  • 确定性
>>> # 无序性
...
>>> s = set('Python')
>>> s
{'h', 'n', 'o', 't', 'P', 'y'}
>>>
>>> s[0]                # 不支持索引
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing
>>>
>>>
>>> # 互异性
...
>>> s = set('Hello')
>>> s
{'H', 'e', 'l', 'o'}
>>>
>>>
>>> # 确定性
...
>>> 'l' in s
True
>>>
>>> 'z' in s
False

 

3. 集合运算

子集

子集,为某个集合中一部分的集合,故亦称部分集合。

使用操作符 < 执行子集操作,同样地,也可使用方法 issubset() 完成。

并集

一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。

使用操作符 | 执行并集操作,同样地,也可使用方法 union() 完成。

交集

两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。

使用 & 操作符执行交集操作,同样地,也可使用方法 intersection() 完成。

 

差集

A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合

使用操作符 - 执行差集操作,同样地,也可使用方法 difference() 完成。

 

对称差

两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。

使用 ^ 操作符执行差集操作,同样地,也可使用方法 symmetric_difference() 完成。

>>> a = set('abcd')
>>> b = set('cdef')
>>>


>>> #  子集
...
>>> c =set('ab')
>>> c <a
True
>>> c.issubset(a)
True
>>>
>>> c < b
False
>>>
>>>


>>> # 并集
...
>>> a | b
{'e', 'b', 'd', 'a', 'f', 'c'}
>>> a.union(b)
{'e', 'b', 'd', 'a', 'f', 'c'}
>>>
>>>
>>>
>>> # 交集
...
>>> a & b
{'d', 'c'}
>>> a.intersection(b)
{'d', 'c'}
>>>
>>>
>>>
>>> # 差集
...
>>> a - b
{'a', 'b'}
>>> b.difference(a)
{'e', 'f'}
>>>
>>>
>>>
>>> # 对称差
...
>>> a ^ b
{'e', 'b', 'a', 'f'}
>>> a.symmetric_difference(b)
{'e', 'b', 'a', 'f'}

 

 

4. 集合的基本操作

1、添加元素

方法一:

    s.add( x )

元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。

方法二:

    s.update( x )

可以添加元素,且参数可以是列表,元组,字典

x 可以有多个,用逗号分开。

>>> a = set('abcd')
>>> b = set('cdef')
>>>
>>>
>>>
>>> a.add('xyz')
>>> a
{'b', 'd', 'a', 'c', 'xyz'}
>>>
>>>
>>> a.update(b)
>>> a
{'e', 'b', 'd', 'a', 'f', 'c', 'xyz'}
>>> b.update([1,2],[3,4])
>>> b
{'e', 1, 'd', 2, 3, 4, 'f', 'c'}

 

2、从集合中删除元素或删除集合

方法一:

      s.remove( x )

将元素 x 添加到集合 s 中移除,如果元素不存在,则会发生错误。

方法二:

      s.discard( x )

移除集合中的元素,且如果元素不存在,不会发生错误。

方法三:

       s.pop() 

也可以设置随机删除集合中的一个元素。

方法四:

        s.clear()

清空集合 s。

>>> s = {'P', 'y', 't', 'h', 'o', 'n'}
>>>
>>> s.remove('h')                       # 删除一个存在的元素
>>> s
{'n', 'o', 't', 'P', 'y'}
>>> s.remove('w')                       # 删除一个不存在的元素(引发错误)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'w'
>>>
>>>
>>> s.discard('t')                      # 去掉一个存在的元素
>>> s
{'n', 'o', 'P', 'y'}
>>> s.discard('w')                      # 去掉一个不存在的元素(正常)
>>> s
{'n', 'o', 'P', 'y'}
>>>
>>>
>>> s.pop()                             # 随机弹出一个元素
'n'
>>> s
{'o', 'P', 'y'}
>>>
>>>
>>> s.clear()                           # 清空集合
>>> s
set()
>>>
>>>
>>> del s                               # 删除集合
>>> s
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 's' is not defined

 

3.  计算集合元素个数

语法格式如下:

     len(s)

计算集合 s 元素个数。

>>> s = {'P', 'y', 't', 'h', 'o', 'n'}
>>>
>>> len(s)
6

 

4.  判断元素是否在集合中存在

语法格式如下:

   x in s

判断元素 s 是否在集合 x 中存在,存在返回 True,不存在返回 False。

>>> s = {'P', 'y', 't', 'h', 'o', 'n'}
>>>
>>> 'o' in s
True
>>> 'z' in s
False

 

5. 集合的方法

方法描述
add()将元素添加到集合中
clear()删除集合中的所有元素
copy()返回集合的浅拷贝
difference()将两个或多个集合的差集作为一个新集合返回
difference_update()从这个集合中删除另一个集合的所有元素
discard()删除集合中的一个元素(如果元素不存在,则不执行任何操作)
intersection()将两个集合的交集作为一个新集合返回
intersection_update()用自己和另一个的交集来更新这个集合
isdisjoint()如果两个集合有一个空交集,返回 True
issubset()如果另一个集合包含这个集合,返回 True
issuperset()如果这个集合包含另一个集合,返回 True
pop()删除并返回任意的集合元素(如果集合为空,会引发 KeyError)
remove()删除集合中的一个元素(如果元素不存在,会引发 KeyError)
symmetric_difference()将两个集合的对称差作为一个新集合返回
symmetric_difference_update()用自己和另一个的对称差来更新这个集合
union()将集合的并集作为一个新集合返回
update()用自己和另一个的并集来更新这个集合

 

 

6. 集合与内置函数

函数描述
all()如果集合中的所有元素都是 True(或者集合为空),则返回 True。
any()如果集合中的所有元素全部为 False,则返回 False,如果有一个为 True,则返回 True。
enumerate()返回一个枚举对象,其中包含了集合中所有元素的索引和值(配对)。
len()返回集合的长度(元素个数)
max()返回集合中的最大项
min()返回集合中的最小项
sorted()从集合中的元素返回新的排序列表(不排序集合本身)
sum()返回集合的所有元素之和

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值