python的集合set,集合的去重功能、运算及常用函数

python的另外一种数据类型,集合,英文为set,是一种没有排序的且内部元素不重复的数据集合,这也是集合set在python编程实战应用中比较常用到的功能。除此之外,集合还有一些差集、交集、并集、对称差集的运算法则,也有一些增删改的常用函数,这一节我们将逐一介绍。

python集合set的创建

python集合set的数据用一对花括号包括,如{1,2,3},注意字典也是用花括号,不同的是字典是用键值对。

集合创建示例

>>> a = {1,2,3} #声明一个集合
>>> type(a)
<class 'set'>
>>> b = set(range(1,10))
>>> b
{1, 2, 3, 4, 5, 6, 7, 8, 9}

集合去重功能及面临的问题

集合的去重功能主要用的是set()函数

集合去重示例

>>> c = [1,1,5,6,6,8,9,8,6] #声明一个列表
>>> c
[1,1,5,6,6,8,9,8,6]
>>> d = set(c)
{1, 5, 6, 8, 9}

集合不支持索引和切片

在python中,试图对集合使用索引将发生错误。

示例

>>> c = set(range(1,10))
>>> c
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> c[0] #集合使用索引将发生错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing

>>> c[0:3] #集合使用切片也将发生错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not subscriptable

集合的add()函数

集合set的add()函数可以用于添加元素到集合。

add()示例

>>> a = {1,3,'x1y1z1.com','至简计算','python全栈'}
>>> a
{1, '至简计算', 3, 'x1y1z1.com', 'python全栈'}
>>> a.add('Django') #为集合a添加元素Django
>>> a
{1, '至简计算', 3, 'x1y1z1.com', 'python全栈', 'Django'}

集合的pop()函数

跟前面的列表、元组一样,pop()函数也可以用于弹出集合的元素,不同的是,集合的pop()不是从末尾弹出,而是从前端弹出。

集合pop()示例

>>> a = {1, '至简计算', 3, 'x1y1z1.com', 'python全栈', 'Django'}
>>> a.pop()
1 #从前端弹出
>>> a.pop()
'至简计算'

集合remove()函数

同pop()一样,用于删除集合的元素,不同的是,remove()可以指定某一个特定的元素。

集合remove()示例

>>> a = {1, '至简计算', 3, 'x1y1z1.com', 'python全栈', 'Django'} 
>>> a.remove(3)
>>> a
{1, '至简计算', 'x1y1z1.com', 'python全栈', 'Django'}

集合的update()函数

用于将a序列更新到集合b中。

集合update()示例

>>> a
{1, '至简计算', 'x1y1z1.com', 'python全栈', 'Django'}
>>> a.update([1,2,3])
>>> a
{1, '至简计算', 2, 3, 'x1y1z1.com', 'python全栈', 'Django'} #update更新后自动对集合进行去重
>>> a.update('very good')
>>> a #注意,我们可以看到,python将字符串看成了一个有单个字符组成的序列,除此之外,也可以看出set是无序的
{1, '至简计算', 2, 3, 'v', 'x1y1z1.com', 'e', 'y', 'python全栈', 'r', 'd', 'Django', 'g', 'o', ' '}

集合的clear()函数

示例

>>> a
{1, '至简计算', 2, 3, 'v', 'x1y1z1.com', 'e', 'y', 'python全栈', 'r', 'd', 'Django', 'g', 'o', ' '} 
>>> a.clear() #清空结合
>>> a
set()
>>> del a #删除集合
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

集合的copy()函数

示例

>>> a = set(range(1,10))
>>> a
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> b = a.copy()
>>> b
{1, 2, 3, 4, 5, 6, 7, 8, 9} 
>>> b.add(10)
>>> b
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
>>> a
{1, 2, 3, 4, 5, 6, 7, 8, 9}

集合set的差集、交集、并集、对称差集等运算

集合set的交并集等运算法则跟数学上的基本一样。

示例

>>> a = {1,2,5,6}
>>> b = {5,6,8,9}
>>> a - b #差集
{1,2}
>>> b - a
{8,9}
>>> a | b #并集
{1, 2, 5, 6, 8, 9}
>>> a & b #交集
{5,6}
>>> a ^ b #对称差集
{1, 2, 8, 9}

python的集合set的内容就介绍到这,下一章节我们将介绍python的流程控制。


全栈后端 / python教程 :


























Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.