Python 中的集合完整指南一

108 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

python 中的集合提供了一种方法来创建一组唯一的无重复项的无序项。他们的主要用例是检查一组项目中是否存在一个项目,这在许多不同的情况下都很有用。

创建集合非常简单,有点类似于我们在 Python 中定义列表的方式唯一的区别是我们使用{}花括号来定义一个集合:

mySet = { "some", "set", "of", "items" }

集合也可以使用以下set()函数从列表中定义:

mySet = set([ 'some', 'list', 'becoming', 'a', 'set' ]) 
# set is { 'some', 'list', 'becoming', 'a', 'set' }

您还可以使用相同的set()函数从字符串创建集合:

mySet = set('somestring')
# set is { 's', 'o', 'm', 'e', 's', 't', 'r', 'i', 'n', 'g' }

与其他可数类型的数据一样,我们也可以使用它len来获取集合的长度:

let mySet = set([ 'some', 'list', 'becoming', 'a', 'set' ]) 
print(len(mySet)) 
# Returns 5

最后,我们还可以使用以下函数定义所谓的 a frozenset,它只是具有固定值的集合的不可变、不可更改的版本frozenset():

let mySet = frozenset([ 'some', 'list', 'becoming', 'a', 'set' ])

组合和相交集

我们可以使用运算符将两组合并为一组|。如果一个项目在两个集合中都存在,则只会带一份它的副本。这是我们组合两个集合的示例:

mySet = { "set", "one" } myNewSet = { "set", "two" } 
combinedSet = mySet | myNewSet 
print(combinedSet) 
# { "set", "one", "two" }

我们可以使用相交集合&。这意味着我们最终会得到一个集合,其中的项目只是两者都存在的项目。使用相同的示例,我们因此可以创建一个仅包含项目的集合set:

mySet = { "set", "one" } 
myNewSet = { "set", "two" } 
combinedSet = mySet & myNewSet 
print(combinedSet) 
# { "set" }

我们可以组合集合的另一种方法是通过减法,o 最终得到一个新集合,该集合只包含在删除两个集合中的任何共同项目时留下的项目。例如,下面的新集合只有一个项目 - cool,因为mySet和mySecondSet都包含“集合”和“一个”:

mySet = { "set", "one", "cool" } 
mySecondSet = { "set", "one" } 
myNewSet = mySet - mySecondSet 
print(myNewSet) 
# { "cool" }

最后,我们可以做所谓的对称差异,我们最终得到一个集合,其中包含在其中一个mySet或mySecondSet但不是两个中找到的项目:

mySet = { "set", "one", "cool", "nice" } 
mySecondSet = { "set", "one", "friendly" } 
myNewSet = mySet ^ mySecondSet 
print(myNewSet) 
# { "cool", "nice", "friendly" }