数据-R语言-图表-决策-Linux-Python

Python 学习笔记 - 集合

2019-08-03  本文已影响1人  风味沙拉

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,...) 修改当前集合,可以添加新的元素或集合到当前集合中
上一篇 下一篇

猜你喜欢

热点阅读