Python 集合
集合(set)是无序的、不重复的元素序列。
创建集合
使用花括号 { } 或者 set()
函数创建集合。但是,创建空的集合必须使用 set()
,因为花括号是用于创建字典(Dictionary)的。
myset = set('12猪八戒')
myset2 = {1,2,'猪八戒'}
print(myset) # '12猪八戒' 会被分为独立的单元,见下面结果显示
print(myset2) # 三个独立元素
结果:
{'2', '戒', '1', '八', '猪'}
{1, 2, '猪八戒'}
访问元素
集合不支持索引位置方位,如:
myset2 = {1,2,'猪八戒'}
print(myset2[2])
结果:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing
修改元素
集合一旦创建不可修改,但是可以添加和移除元素。
添加元素
使用 add(元素)
往集合里添加新元素,如果元素已经存在,则不添加:
myset = {'如来佛','观音菩萨'}
myset.add('托塔天王')
print(myset)
结果:
{'托塔天王', '如来佛', '观音菩萨'}
或者使用 update(列表、元组、字典、集合)
往集合里添加新元素,且参数可以是列表、元组、字典:
# 示例 1
myset = {'如来佛','观音菩萨'}
newset = {'孙悟空','白骨精'} # 集合
myset.update(newset)
print(myset)
结果:
{'白骨精', '如来佛', '观音菩萨', '孙悟空'}
# 示例 2
myset = {'如来佛','观音菩萨'}
newset = ('孙悟空','白骨精') # 元组
myset.update(newset)
print(myset)
结果:
{'白骨精', '如来佛', '观音菩萨', '孙悟空'}
# 示例 3
myset = {'如来佛','观音菩萨'}
newset = {1:'孙悟空',2:'白骨精'} # 字典
myset.update(newset)
print(myset)
结果:
{'如来佛', '观音菩萨', 2, 1}
# 示例 4
myset = {'如来佛','观音菩萨'}
newset = ['孙悟空','白骨精'] # 列表
myset.update(newset)
print(myset)
结果:
{'白骨精', '如来佛', '观音菩萨', '孙悟空'}
移除元素
remove(元素)
或者 discard(元素)
来移除集合中的元素,如果元素不存在则报错:
# 示例 1
myset = {'如来佛','观音菩萨'}
myset.remove('如来佛')
print(myset)
结果:
{'观音菩萨'}
# 示例 2
myset = {'如来佛','观音菩萨'}
myset.discard('如来佛')
print(myset)
结果:
{'观音菩萨'}
方法 pop()
可以随机移除一个元素:
myset = {'如来佛','观音菩萨'}
myset.pop()
结果:
{'观音菩萨'}
获取长度
使用 len(元组)
来获取元组长度:
myset = {'如来佛','观音菩萨'}
print(len(myset))
结果:
2
集合内置方法
方法 | 说明 |
---|---|
add(元素) | 向集合添加元素 |
clear() | 移除集合所有元素 |
copy() | 拷贝一个集合 |
difference(集合) | 返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中 |
difference_update(集合) | 移除两个集合中都存在的元素。注意:difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。 |
discard(元素) | 删除集合中指定的元素 |
intersection(集合1,集合2,集合3,...) | 返回两个或更多集合中都包含的元素,即交集 |
intersection_update(集合1,集合2,集合3,...) | 获取两个或更多集合中都重叠的元素,即计算交集。注意,intersection_update() 方法不同于 intersection() 方法,因为 intersection() 方法是返回一个新的集合,而 intersection_update() 方法是在原始的集合上移除不重叠的元素。 |
isdisjoint(集合) | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False |
issubset(集合) | 判断指定集合是否为该方法参数集合的子集 |
issuperset(集合) | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove(元素) | 移除指定元素 |
symmetric_difference(集合) | 返回两个集合中不重复的元素集合 |
symmetric_difference_update(集合) | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中 |
union(集合1,集合2,集合3,...) | 返回两个或多个集合的并集 |
update(集合1,集合2,集合3,...) | 修改当前集合,可以添加新的元素或集合到当前集合中 |
网友评论