Python—集合(在我的世界,你就是唯一)

时间:2022-04-15 09:25:10

一.概念与定义

集合类型与数学中集合的概念一致,即包含0个或多个数据项的无序组合。

元素不可重复,只能是固定数据类型元素。

集合(set)属于Python无序可变序列,使用一对大括号作为定界符,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,元素之间不允许重复。 集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据。类型本身都是可变数据类型,不能作为集合的元素出现。

二.创建于删除

直接将集合赋值给变量即可创建一个集合对象。

>>> a = {3, 5} #创建集合对象

也可以使用函数set()函数将列表、元组、字符串、range对象等其他可迭代对象转换为集合,如果原来的数据中存在重复元素,则在转换为集合的时候只保留一个;如果原序列或迭代对象中有不可哈希的值,无法转换成为集合,抛出异常。

>>> a_set = set(range(8, 14)) #把range对象转换为集合

>>> b_set = set([0, 1, 2, 3, 0, 1, 2, 3, 7, 8]) #转换时自动去掉重复元素

>>> b_set {0, 1, 2, 3, 7, 8}

>>> x = set() #空集合

三.操作与运算

Python—集合(在我的世界,你就是唯一)

上述操作符表达了集合类型的4种基本操作,交集(&)、并集(|)、差集(-)、补集(^),操作逻辑与数学定义相同.

Python—集合(在我的世界,你就是唯一)

集合类型有10个操作函数或方法

Python—集合(在我的世界,你就是唯一)

集合类型主要用于三个场景:成员关系测试、元素去重复和删除数据项,例子如下。

>>>"BIT" in {"PYTHON", "BIT", 123, "GOOD"} #成员关系测试

True

>>>tup = ("PYTHON", "BIT", 123, "GOOD", 123) #元素去重

>>>set(tup) {123, 'GOOD', 'BIT', 'PYTHON'}

>>>newtup = tuple(set(tup)–{'PYTHON'})

# 去重同时删除数据项 ('GOOD', 123, 'BIT')

集合类型与其他类型最大的不同在于它不包含重复元素,因此,当需要对一维数据进行去重或进行数据重复处理时,一般通过集合来完成。

四.应用实例

可以使用集合快速提取序列中单一元素,即提取出序列中所有不重复元素。

如果使用传统方式的话,需要编写下面的代码:

>>> import random

>>> listRandom = [random.choice(range(10000)) for i in range(100)]

>>> noRepeat = []

>>> for i in listRandom :

if i not in noRepeat :

noRepeat.append(i)

>>> len(listRandom)

>>> len(noRepeat)

而如果使用集合的话,只需要下面这么一行代码就可以了,可以参考上面的代码对结果进行验证。

>>>newSet = set(listRandom)