PythonNote2_(集合基础)

11 关于集合(set)

参考: http://www.opython.com/217.html

11.1创建集合

集合通过set(iterable)方法创建,参数iterable为可迭代对象。

s1 = set('好好学习天天想上')  # 将字符串分解为单个字符,作为集合的元素创建集合
s2 = set(('好好', '学习', '天天', '想上'))  # 将元组分解为单个元素,作为集合元素创建集合
s3 = set(['好好', '学习', '天天', '想上'])  # 将列表分解为单个元素,作为集合元素创建集合


print (s1)  # 显示输出结果为:{'好', '习', '上', '天', '想', '学'}
print (s2)  # 显示输出结果为:{'好好', '想上', '学习', '天天'}
print (s3)  # 显示输出结果为:{'好好', '想上', '学习', '天天'}
11.2添加元素

a.添加单个元素:add(element)函数,参数element为集合允许添加的元素(例如数字、字符串、元组等)

b.添加多个元素:update(iterable)函数,参数iterable为可迭代对象。

# 创建集合
s1 = set('123')
s2 = set('123')
s3 = set('abc')

# 添加单个元素
s1.add('4')

# 添加多个元素
s2.update(['4','5','6'])  # 添加列表到集合,列表元素会被分解为单个元素后添加到集合
s3.update('de')  # 添加字符串到集合,字符串会被分解为单个元素后添加到集合

# 显示输出
print (s1)  # 显示输出结果为:{'4', '3', '1', '2'}
print (s2)  # 显示输出结果为:{'4', '2', '6', '5', '3', '1'}
print (s3)  # 显示输出结果为:{'c', 'b', 'd', 'e', 'a'}

#注意:因为集合元素是无序的,大家在测试以上代码时,显示输出的结果与上方结果,可能在顺序上不一致。
11.3删除元素

a.删除指定元素:remove(element)

b.删除指定元素:discard(element)

区别:当集合中不存在这两个方法参数中填入的元素时,remove()方法会抛出异常,而discard()方法则没有任何影响

11.4取出元素

pop(element)

11.5清空元素

clear()

11.6交、并、补和差集
# 创建集合
s1 = set('Python')
s2 = set('PyCharm')

# 交集操作:获取两个集合中共有元素。
print (s1 & s2)  # 显示输出结果为:{'y', 'P', 'h'}
print (s1.intersection(s2))  # 显示输出结果为:{'y', 'P', 'h'}

# 并集操作:获取两个集合去除重复元素后的全部元素。
print (s1 | s2)  # 显示输出结果为:{'y', 'a', 'C', 'o', 'P', 'n', 't', 'm', 'r', 'h'}
print (s1.union(s2))  # 显示输出结果为:{'y', 'a', 'C', 'o', 'P', 'n', 't', 'm', 'r', 'h'}

# 补集操作:获取当前集合去除与另一集合交集元素后的全部元素。
print (s1 - s2)  # 显示输出结果为:{'o', 't', 'n'}
print (s1.difference(s2))  # 显示输出结果为:{'o', 't', 'n'}
print (s2 - s1)  # 显示输出结果为:{'m', 'a', 'r', 'C'}
print (s2.difference(s1))  # 显示输出结果为:{'m', 'a', 'r', 'C'}

# 差集操作:获取两个集合去除交集元素后的全部元素。
print (s1 ^ s2)  # 显示输出结果为:{'o', 't', 'm', 'a', 'r', 'n', 'C'}
print (s1.symmetric_difference(s2))  # 显示输出结果为:{'o', 't', 'm', 'a', 'r', 'n', 'C'}

特殊的

difference_update(set) 函数,将当前集合和指定集合进行补集运算后并将当前集合更新为运算结果。

intersection_update(set) 函数,能够将当前集合和指定集合进行交集运算,并将当前集合内容更新为运算结果。

11.7复制集合

copy()方法

11.8成员关系

在之前我们接触过“in”这操作符,可以用来判断操作符前方的值是否被后方的序列包含(成员关系)。
另外,我们还可以使用“not in”,判断操作符前方的值是否未被后方的序列包含(非成员关系)。
在集合中,我们同样可以使用这两个操作符。
另外,我们还可以通过以下方法,判断一个集合是否另外一个集合的子集或超集以及没有交集。
isdisjoint(set):可以判断集合是否与指定集合不存在交集,参数set为集合;如果成立返回结果为True,否则为False。
issubset(set):可以判断集合是否指定集合的子集,参数set为集合;如果成立返回结果为True,否则为False。
issuperset(set):可以判断集合是否指定集合的超集,参数set为集合;如果成立返回结果为True,否则为False。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值