欢迎各位亲朋好友,我是你们的老朋友,Mr数据杨。今天我们的主题是“玩转Python集合”,我们会像战场上的三国将领一样,运筹帷幄,巧妙应对各种集合操作。
想象一下,你是一个谋略高人,比如诸葛亮,你的手下有着各种各样的将领,他们就是你的“集合”。有时你需要将两个队伍合并,一起对抗曹操,这就像是我们在Python中计算“集合并集”。有时你需要找出你和刘备共有的将领,就像我们计算“集合交集”。而当你想知道与孙权相比,自己手下有哪些独有的将领时,你就在计算“集合之间的差异”。
当然,你可能也想知道自己和孙权的非共有将领,这就是我们要计算的“集合间的对称差”。那么如何判断两位君主是否有共享的将领呢?那就看看他们的“集合”是否包含相同的元素。
判断刘备的势力是否已经成为你势力的一部分,就像判断一个“集合”是否是另一个“集合”的子集。如果刘备的全部将领都在你的麾下,但你还有别的将领,那他就是你的“真子集”。反过来,如果你能包揽刘备和孙权所有的将领,你就成为他们的“超集”,如果你还有其他人,你甚至成为他们的“真超集”。
这就是今天我们将要探讨的Python集合操作,我们像诸葛亮一样,用智谋与策略,管理好我们的“集合”!接下来,让我们跟随笔记的脚步,一起进入集合的世界,学习这些实用的Python技巧!
文章目录
- 计算集合并集
- 计算集合交集
- 计算集合之间差异
- 计算集合间对称差
- 判断两个集合是否包含相同的元素
- 判断一个集合是否是另一个集合的子集
- 判断一个集合是否是另一个集合的真子集
- 判断一个集合是否是另一个集合的超集
- 判断一个集合是否是另一个集合的真超集
计算集合并集
并集操作可以将两个或多个集合的元素合并为一个集合,去除重复元素。
x1 = {'曹操', '孫権', '劉備'}
x2 = {'劉備', '司馬懿', '董卓'}x1.union(x2)
# 输出: {'劉備', '董卓', '司馬懿', '孫権', '曹操'}x1 | x2
# 输出: {'劉備', '董卓', '司馬懿', '孫権', '曹操'}
多个集合的合并操作可以使用union()
函数或|
运算符。
a = {1, 2, 3, 4}
b = {2, 3, 4, 5}
c = {3, 4, 5, 6}
d = {4, 5, 6, 7}a.union(b, c, d)
# 输出: {1, 2, 3, 4, 5, 6, 7}a | b | c | d
# 输出: {1, 2, 3, 4, 5, 6, 7}
计算集合交集
交集操作可以获取两个或多个集合中共有的元素。
x1 = {'曹操', '孫権', '劉備'}
x2 = {'劉備', '司馬懿', '董卓'}x1.intersection(x2)
# 输出: {'劉備'}x1 & x2
# 输出: {'劉備'}
多个集合的交集操作可以使用intersection()
函数或&
运算符。
a = {1, 2, 3, 4}
b = {2, 3, 4, 5}
c = {3, 4, 5, 6}
d = {4, 5, 6, 7}a.intersection(b, c, d)
# 输出: {4}a & b & c & d
# 输出: {4}
计算集合之间差异
差集操作可以获取一个集合中除去与另一个集合共有的元素剩下的元素。
x1 = {'曹操', '孫権', '劉備'}
x2 = {'劉備', '司馬懿', '董卓'}x1.difference(x2)
# 输出: {'曹操', '孫権'}x2.difference(x1)
# 输出: {'董卓', '司馬懿'}
差集操作可以使用difference()
函数或-
运算符。
x1 - x2
# 输出: {'曹操', '孫権'}x2 - x1
# 输出: {'董卓', '司馬懿'}
多个集合的差集操作可以连续使用-
运算符。
a = {1, 2, 3, 4}
b = {2, 3, 4, 5}
c = {3, 4, 5, 6}
d = {4, 5, 6, 7}a.difference(b, c, d)
# 输出: {1, 2, 3}a - b - c
# 输出: {1, 2, 3}
计算集合间对称差
对称差操作可以获取两个集合中互相没有的元素。
x1 = {'曹操', '孫権', '劉備'}
x2 = {'劉備', '司馬懿', '董卓'}x1.symmetric_difference(x2)
# 输出: {'曹操', '司馬懿', '董卓', '孫権'}x1 ^ x2
# 输出: {'曹操', '司馬懿', '董卓', '孫権'}
对称差操作可以使用symmetric_difference()
函数或^
运算符。
a = {1, 2, 3, 4, 5}
b = {10, 2, 3, 4, 50}
c = {1, 50, 100}a ^ b ^ c
# 输出: {100, 5, 10}
判断两个集合是否包含相同的元素
可以使用isdisjoint()
方法判断两个集合是否没有共同的元素。如果两个集合没有共同元素,则返回True
,否则返回False
。
x1 = {'曹操', '孫権', '劉備'}
x2 = {'劉備', '司馬懿', '董卓'}x1.isdisjoint(x2)
# 输出: Falsex2 - {'劉備'}
# 输出: {'董卓', '司馬懿'}x1.isdisjoint(x2 - {'劉備'})
# 输出: Truex1 = {1, 3, 5}
x2 = {2, 4, 6}x1.isdisjoint(x2)
# 输出: Truex1 & x2
# 输出: set()
判断一个集合是否是另一个集合的子集
可以使用issubset()
方法判断一个集合是否是另一个集合的子集。如果是子集,则返回True
,否则返回False
。一个集合被认为是它自身的一个子集。
x1 = {'曹操', '孫権', '劉備'}x1.issubset({'曹操', '孫権', '劉備', '司馬懿', '董卓'})
# 输出: Truex2 = {'劉備', '司馬懿', '董卓'}
x1 <= x2
# 输出: Falsex = {1, 2, 3, 4, 5}
x.issubset(x)
# 输出: Truex <= x
# 输出: True
判断一个集合是否是另一个集合的真子集
可以使用<
运算符判断一个集合是否是另一个集合的真子集。如果是真子集,则返回True
,否则返回False
。
x1 = {'曹操', '孫権'}
x2 = {'曹操', '孫権', '劉備'}x1 < x2
# 输出: Truex1 = {'曹操', '孫権', '劉備'}
x2 = {'曹操', '孫権', '劉備'}x1 < x2
# 输出: Falsex = {1, 2, 3, 4, 5}
x < x
# 输出: False
判断一个集合是否是另一个集合的超集
可以使用issuperset()
方法判断一个集合是否是另一个集合的超集。如果是超集,则返回True
,否则返回False
。一个集合被认为是它自身的一个超集,默认为自身超集。
x1 = {'曹操', '孫権', '劉備'}x1.issuperset({'曹操', '孫権'})
# 输出: Truex2 = {'劉備', '司馬懿', '董卓'}
x1 >= x2
# 输出: Falsex = {1, 2, 3, 4, 5}
x.issuperset(x)
# 输出: Truex >= x
# 输出: True
判断一个集合是否是另一个集合的真超集
可以使用>
运算符判断一个集合是否是另一个集合的真超集。
如果是真超集,则返回True
,否则返回False
。
x1 = {'曹操', '孫権', '劉備'}
x2 = {'曹操', '孫権'}x1 > x2
# 输出: Truex1 = {'曹操', '孫権', '劉備'}
x2 = {'曹操', '孫権', '劉備'}x1 > x2
# 输出: Falsex = {1, 2, 3, 4, 5}
x > x
# 输出: False