文章目录
python 集合
集合是无序排列,不重复的数据组合体。可进行交、并、差等运算。
一、集合常见操作
1.创建集合
1.用一对大括号将多个用逗号分隔的数据括起来。
>>>a_set={
0,1,2,3,4,5,6,7,8,9}
>>>a_set
{
0,1,2,3,4,5,6,7,8,9}
2.使用集合对象set()方法创建集合,该方法可以将列表、元组、字符串数据转换成集合类型数据。
#将列表转换成集合(元组类似)
>>>b_set=set{
['python','chemistry',2017,2.5]}
>>>b_set
{
'python','chemistry',2017,2.5}
#将字符串转化成集合
>>>d_set=set{
'python'}
>>>d_set
{
'y','o','p','t','h','n'}
3.使用集合对象frozenset()方法创建一个冻结的集合,即该集合不能删除任何集合里的元素。他与set()方法创建的集合的区别是:rozenset()可以作为字典的key。
>>>e_set=frozenset('a')
>>>e_set
>>>a_dict={
e_set:1,'b':2}
>>>a_dict
{
frozenset(['a']):1,'b':2}
>>>f_set=set('a')
>>>f_set
{
'a'}
>>>b_dict={
f_set:1,'b':2}
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
b_dict={
f_set:1,'b':2}
TypeError: unhashable type: 'set'
#集合不允许有相同元素,若创建时有相同元素,python删除重复元素
>>>g_set={
0,0,0,1,2,1,1,4,5,5,5}
>>>g_set
{
0,1,2,4,5}
2.访问集合
由于集合本身是无序的,所以不能为集合船舰索引或进行切片操作只能使用in、not in或循环遍历来访问或判断集合元素。
>>>b_set=set{
['python','chemistry',2017,2.5]}
>>>b_set
{
'python','chemistry',2017,2.5}
>>>2.5 in b_set
True
>>>2 in b_set
False
>>>for i in b_set:print(i,end=' ')
python chemistry 2017 2.5
3.删除集合
使用del删除集合。
>>>a_set={
0,1,2,3,4,5,6,7,8,9}
>>>a_set
{
0,1,2,3,4,5,6,7,8,9}
>>>del a_set
>>>a_set
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
a_set
NameError: name 'a_set' is not defined
4.更新集合
1.使用集合对象add()方法为集合添加元素。格式:s.add(x)。
>>>b_set.add('math')
>>>b_set
{
'python','chemistry',2017,2.5,'math'}
2.使用集合对象update()更新集合。
>>>s={
'python','C','C++'}
>>>s.update{
[1,2,3]}
>s
{
'python','C','C++',1,2,3}
5.删除集合中的元素
1.使用集合对象remove()方法删除,格式:s.remove(x),x若不存在,提示出错信息。
>>>s={
'python','C','C++',1,2,3}
>>>s.remove(1)
>>>s
{
'python','C','C++',2,3}
>>>s.remove(0)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
s.remove(0)
KeyError: 0
2.使用集合对象discard()方法删除集合元素。格式:s.discard(x),x若不存在,不提示出错信息。
>>>s.discard('C')
>>>s
{
'python','C++',2,3}
>>>s.discard('abc')
>>>s
{
'python','C++',2,3}
3.使用集合对象pop()删除集合中任意一个元素并返回该集合。
>>>s.pop()
1
>>>s
{
'python','C++',2,3}
4.使用集合对象clear()方法删除集合所有元素。
>>>s.clear()
>>>s
set()
二、集合常用运算
1.交集
方法:s1&s2&···&sn,计算s1,s2,···,sn,这n个集合的交集。
>>>{
0,1,2,3,4,5,6,7,8,9}&{
0,2,4,6,8}
{
8,0,2,4}
>>>{
0,1,2,3,4,5,7,8,9}&{
0,2,4,6,8}&{
1,3,5,7,9}
set() #交集为空集合
2.并集
方法:s1|s2|···|sn,计算s1,s2,····sn这n个集合的并集。
>>>{
0,1,2,3,4,5,7,8,9}|{
0,2,4,6,8}
{
0,1,2,3,4,5,6,7,8,9}
>>>{
0,1,2,3,4,5}|{
0,2,4,6,8}
{
0,1,2,3,4,5,6,8}
3.差集
方法:s1—s2—···—sn,计算s1,s2,····sn这n个集合的差集。
>>>{
0,1,2,3,4,5,7,8,9}—{
0,2,4,6,8}
{
1,3,5,7,9}
>>>{
0,1,2,3,4,5,6,7,8,9}-{
0,2,4,6,8}-{
2,3,4}
{
1,5,9,7}
4.对称差集
方法:s1^ ···^sn,计算s1,s2,····sn这n个集合的对称差集。
>>>{
0,1,2,3,4,5,7,8,9}^{
0,2,4,6,8}
{
1,3,5,7,9}
>>>{
0,1,2,3,4,5,6,7,8,9}^{
0,2,4,6,8}^{
1,3,5,7,9}
set()
5.集合的比较
1.s1==s2:判断s1和s2集合是否相等。如果s1和s2集合具有相同的元素,则返回True;否则返回False。
>>>{
1,2,3,4}=={
4,3,2,1}
True
判断两个集合是否相等,只需判断其中的元素是否一致,与顺序无关。
2.s1!=s2:判断s1和s2集合是否不相等。
3.s1<s2:判断s1是否是s2的真子集。
4.s1<=s2:判断s1是否是s2的子集。
5…s1>s2:判断s1是否是s2的真超集。
6…s1>=s2:判断s1是否是s2的超集。