python学习笔记(十五)之集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习笔记(十五)之集合相关的知识,希望对你有一定的参考价值。

集合:对应数学中的集合类型。集合中的元素是唯一,且无序的。

创建集合

  方法一:使用{},注意python会自动删除重复元素

>>> number = {1,2,3,4,3,2,1}
>>> number
{1, 2, 3, 4}

  方法二:使用set()工厂函数,传递一个列表,元组或字符串

>>> temp = set([1,2,3,2,1])
>>> temp
{1, 2, 3}
>>> temp = set((1,2,3,2,1))
>>> temp
{1, 2, 3}
>>> temp = set("Hello Python")
>>> temp
{‘n‘, ‘P‘, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘h‘, ‘e‘}

访问集合元素

  方法一:使用for把集合中元素一个一个读出来

>>> temp
{‘n‘, ‘P‘, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘h‘, ‘e‘}
>>> for i in temp:
...     print(i, end = ‘ ‘)
... 
n P   H l y t o h e >>> 

  方法二:使用in和not in来判断一个元素是否在集合中

>>> temp
{‘n‘, ‘P‘, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘h‘, ‘e‘}
>>> ‘n‘ in temp
True
>>> ‘N‘ in temp
False

添加元素:使用add()方法

>>> temp
{‘n‘, ‘P‘, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘h‘, ‘e‘}
>>> temp.add(1)
>>> temp.add(2)
>>> temp
{‘n‘, ‘P‘, 1, 2, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘h‘, ‘e‘}

删除元素:使用remove()方法

>>> temp
{‘n‘, ‘P‘, 1, 2, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘h‘, ‘e‘}
>>> temp.remove(1)
>>> temp
{‘n‘, ‘P‘, 2, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘h‘, ‘e‘}
>>> temp.remove(‘H‘)
>>> temp
{‘n‘, ‘P‘, 2, ‘ ‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘h‘, ‘e‘}

 

当需要定义一个不可变的集合时,可以使用frozeset

>>> num = frozenset(range(10))
>>> num
frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
>>> num.remove(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: ‘frozenset‘ object has no attribute ‘remove‘

集合运算  

  子集

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

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

>>> a = set("Hello")
>>> b = set("Hello python")
>>> a < b
True
>>> a.issubset(b)
True

  并集

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

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

>>> a
{‘l‘, ‘o‘, ‘e‘, ‘H‘}
>>> b
{‘n‘, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘p‘, ‘h‘, ‘e‘}
>>> a | b
{‘n‘, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘p‘, ‘h‘, ‘e‘}
>>> a.union(b)
{‘n‘, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘p‘, ‘h‘, ‘e‘}

交集

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

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

>>> a
{‘l‘, ‘o‘, ‘e‘, ‘H‘}
>>> b
{‘n‘, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘p‘, ‘h‘, ‘e‘}
>>> a & b
{‘l‘, ‘o‘, ‘e‘, ‘H‘}
>>> a.intersection(b)
{‘l‘, ‘o‘, ‘e‘, ‘H‘}

差集

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

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

>>> a
{‘l‘, ‘o‘, ‘e‘, ‘H‘}
>>> b
{‘n‘, ‘ ‘, ‘H‘, ‘l‘, ‘y‘, ‘t‘, ‘o‘, ‘p‘, ‘h‘, ‘e‘}
>>> b - a
{‘n‘, ‘ ‘, ‘y‘, ‘t‘, ‘h‘, ‘p‘}
>>> b.difference(a)
{‘n‘, ‘ ‘, ‘y‘, ‘t‘, ‘h‘, ‘p‘}

集合的一些方法

方法描述
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() 用自己和另一个的并集来更新这个集合

以上是关于python学习笔记(十五)之集合的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE 学习笔记之正则表达式(二十五)

python学习笔记之集合2

python学习笔记(十五)异常处理

python学习笔记之集合1

python之集合学习笔记

学习笔记:python3,代码片段(2017)