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学习笔记(十五)之集合的主要内容,如果未能解决你的问题,请参考以下文章