python中集合的概念与数学中集合的概念一致,一般用一对花括号或set进行定义,集合的元素可以是整数、浮点数、字符串或元组,但不能是列表、集合或字典。集合的定义有以下几种形式:
a={2,3.14,'python',(4,6,'C')}#定义一个集合,共有4个元素,元素类型分别是整数、浮点数、字符串和元组
a#查看变量a的值时,我们发现输出的顺序与定义的顺序并不致,这是集合的特征之一,元素是无序的,因此它不能做切片操作。
{(4, 6, 'C'), 2, 3.14, 'python'}
==============================================
b=set('人生苦短,我学python')#用set()函数定义了一个集合,当参数是字符串时,将每个字符作为集合的元素
b
{'h', 'n', 'o', 'p', 't', 'y', '人', '学', '我', '生', '短', '苦', ','}
===============================================
#当set()函数的参数是列表时,将方括号去掉,列表元素直接作为集合元素,我们发现列表中有2个6,但输出时只有1个6,因为集合的元素具有不可重复性,我们可以利用这个特性实现元素去重操作
c=set([345,6,35,4,6,353])
c
{4, 6, 35, 345, 353}
==============================================
#将元组作为set()函数的参数,输出时去掉圆括号
d=set(('天生我材必有用','千金散尽还复来'))
d
{'千金散尽还复来', '天生我材必有用'}
=============================================
在数学中集合有并集、交集、差集、补集等操作,这些操作可以非常便捷地用python实现。
python=set(['张三','王八','赵六']) #表示选修了python的名单
c=set(['王八','陈十一']) #表示选修了c的名单
python&c #交集,表示同时选修python与c
{'王八'}
================================================
In [4]: python|c #并集,表示选了python或C
Out[4]: {'张三', '王八', '赵六', '陈十一'}
==========================================
In [5]: python-c #差集,常用于删除元素,表示选了python但没选c
Out[5]: {'张三', '赵六'}
===================================================
In [6]: python^c #对称差,输出只选一门课的学生,等价于并集-交集
Out[6]: {'张三', '赵六', '陈十一'}
=======================================
In [7]: (python|c)-(python&c) #同python^c
Out[7]: {'张三', '赵六', '陈十一'}
========================================
In [8]: python<=c #集合python若是集合c的真子集则返回True,否则返回False
Out[8]: False
In [9]: python>=c #集合c若是集合python的真子集则返回True,否则返回False
Out[9]: False
集合还有一些常用的操作函数或方法:
In [24]: a={1,2,3}
In [25]: a.add(4) #添加元素
In [26]: a
Out[26]: {1, 2, 3, 4}
In [27]: a.pop() #随机返回一个元素,并删除
Out[27]: 1
In [28]: a
Out[28]: {2, 3, 4}
In [29]: a.discard(3) #删除元素,若无该元素不报错
In [30]: a
Out[30]: {2, 4}
In [31]: a.remove(5) #删除元素,若无该元素报错
Traceback (most recent call last):
File "<ipython-input-40-91f29775c65b>", line 1, in <module>
a.remove(5)
KeyError: 5
In [32]: a
Out[32]: {2, 4}
In [33]: len(a) #元素个数,即集合长度
Out[33]: 2
In [34]: 3 in a
Out[34]: False
In [35]: 3 not in a
Out[35]: True
In [36]: max(a)
Out[36]: 4
In [37]: min(a)
Out[37]: 2
In [38]: sum(a)
Out[38]: 6
In [39]: sorted(a) #升序排列
Out[39]: [2, 4]
In [40]: a.clear() #清空集合
In [41]: a
Out[41]: set() #空集
网友评论