开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天,点击查看活动详情
python 中的集合提供了一种方法来创建一组唯一的无重复项的无序项。他们的主要用例是检查一组项目中是否存在一个项目,这在许多不同的情况下都很有用。
书接上文,前面几篇文章我们介绍了python集合的方法,今天我们来说集合的其他方法。
使用集合测试成员资格
集合的主要用例是测试成员资格,以查看某个项目是否存在于集合中。我们可以使用in和not in关键字来做到这一点。让我们看一个例子。如果我们想检查orangeis 在我们的fruits集合中,我们使用in:
fruits = { "orange", "apple", "peach" }
print("orange" in fruits)
# True
或者,如果我们想检查 orange 是否不在 中fruits,我们使用not in:
fruits = { "orange", "apple", "peach" }
print("orange" not in fruits)
# False
复制一组
与列表一样,我们可以使用copy()附加到所有集合的方法来复制一个集合。这不会更改值,但会更改此新集合在内存中的引用。这意味着如果使用 比较值==,集合将是相同的,当使用 引用比较时is,集合将不相同:
mySet = { "set", "one" }
mySetCopy = mySet.copy();
print(mySet == mySetCopy)
# True
print(mySet is mySetCopy)
# False
测试超集和子集
集合的另一个非常有用的用例是能够检查一个集合是另一个集合的超集还是子集(这有点绕口令):
- 子集将是完全包含在另一个集合中的集合。
- 超集将是完全包含另一个集合成员的集合。
在 Python 中检查子集
假设我们有两组,如下所示:
mySet = { "set", "one", "two" }
mySecondSet = { "set", "one" }
mySecondSet, 实际上是 的一个子集mySet,因为它完全包含在 中mySet。我们可以使用运算符对此进行测试<=:
mySet = { "set", "one", "two" }
mySecondSet = { "set", "one" }
print(mySecondSet <= mySet)
# True
我们还可以使用<运算符来检查真正的子集,这意味着它mySecondSet包含在 中mySet,但在值上不等于mySet。在上面的示例中,这也是正确的:
mySet = { "set", "one", "two" }
mySecondSet = { "set", "one" }
print(mySecondSet < mySet)
# True
然而,在下面的示例中,mySecondSet确实是 的子集mySet,但它不是真正的子集,因为两者的值相等:
mySet = { "set", "one", }
mySecondSet = { "set", "one" }
print(mySecondSet <= mySet)
# True
print(mySecondSet < mySet)
# False
在 Python 中检查超集
超集的工作方式与子集完全相同——唯一的区别是箭头方向相反。So>用于检查真正的超集,而>=用于检查任何超集。使用我们之前的示例,mySet是mySecondSet- 的超集,因此以下返回 true:
mySet = { "set", "one", "two" }
mySecondSet = { "set", "one" }
print(mySet > mySecondSet)
# True
同样,虽然 mySet 是mySeconSet下面的超集,但它不是真正的超集,因此>不返回 true,而返回 true >=:
mySet = { "set", "one", }
mySecondSet = { "set", "one" }
print(mySet >= mySecondSet)
# True
print(mySet > mySecondSet)
# False