Python 集合(set) 介绍

Python 集合(set) 是一个无序的对象集合,它不像列表和元组那样可以通过索引位置访问元素。

Python的集合可以做一些数学运算,例如 交集、并集、差集、对称差集,请看下面的集合函数。

Python集合在外面使用中括号{},中间元素使用逗号分隔的方式包含一个或多个不同类型的数据项。

Python 集合(set)

语法:

s = {element1, element2, element3}
例如:
nums = {1,3,5,7,9} # 数字类型集合
emp = {1, 'yxjc', 3.14, True} # 不同的数据类型
集合不存储重复的对象,即使在初始化的时候添加了多次,在集合对象中也只保留一个副本,所以我们不能在集合上使用索引取值。
#!/usr/bin/python
# coding=utf-8
 
nums = {1, 2, 2, 3,5,7}
print(nums) 
程序运行结果:
{1, 2, 3, 5, 7}

上面的例子中元素2存储了2次,但是输出时只输出一次。

集合中的顺序并不一定和输出的结果相同,例如:

set1 = {'a','k','b','c','g'}
print(set1) # 输出:{'k', 'g', 'a', 'b', 'c'}

Python集合内部数据类型

Python集合可以包含不同的对象类型,但并不是所有的类型都是可以的,它包含的对象为不可变的内容。

比如数字(整数、浮点数、复数)、字符串和元组都是可以的,而对于集合、列表、字典则是不可行的。

例如:

#!/usr/bin/python
# coding=utf-8
 
set1 = {'yxjc', 3.14, True} # 是可以的
print(set1) 

set2 = {(1,2,3),['a','b','c'],{1:'one',2:'two'}} # 不可以
print(set2)
Python 不能定义的数据类型

上面的例子中,虽然只报错了不合适的数据类型list,但是['a','b','c'],{1:'one',2:'two'}都是不可接受的类型。因为它们是可变的内容。

修改集合元素

使用Python内置的集合函数add()remove()update()方法来修改集合。

#!/usr/bin/python
# coding=utf-8
 
s = set() # 初始化一个集合
s.add(10) # 添加元素
s.add(20)
s.add(30)
print(s) #输出: {10, 20, 30}

set2 = {2, 3, 5, 7}
s.update(set2) # 更新集合元素
print(s)  #输出:{2, 3, 20, 5, 7, 10, 30}

s.remove(2) # 删除集合元素
print(s)  #输出:{3, 20, 5, 7, 10, 30} 

Python集合函数

介绍Pyhton的set集合函数。

函数说明
add()向集合添加元素
clear()
清空集合
copy()
浅复制
difference()求差集,返回第一个集合有,后面集合没有。
difference_update()
求差集,返回第一个集合有,后面集合没有,结果赋值给第一个集合。
discard()
删除集合指定的元素。
intersection()求集合的交集。
intersection_update()求集合的交集,并将结果赋值给第一个集合。
isdisjoint()判断多个集合是否有相同的元素。
issubset()判断集合A是否为集合B的子集
pop()从集合中随机移除一个元素。
remove()删除集合指定的元素。
symmetric_difference()求集合的对称差集。
symmetric_difference_update()求集合的对称差集。
union()求多个集合的并,返回一个新的集合对象。
update()更新集合元素,实际上还是求并集