Python 集合(set) 介绍
Python 集合(set) 是一个无序的对象集合,它不像列表和元组那样可以通过索引位置访问元素。
Python的集合可以做一些数学运算,例如 交集、并集、差集、对称差集,请看下面的集合函数。
Python集合在外面使用中括号{},中间元素使用逗号分隔的方式包含一个或多个不同类型的数据项。
语法:
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)
上面的例子中,虽然只报错了不合适的数据类型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() | 更新集合元素,实际上还是求并集。 |