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() 返回集合的所有元素之和

 

阅读更多
文章标签: Python 集合 set
个人分类: Python3
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭