开启掘金成长之旅!这是我参与「掘金日新计划 · 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" }