集合(set)属于 Python 无序可变序列,使用一对大括号作为定界符,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,元素之间不允许重复。
集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据。 Python 提供了一个内置函数 hash() 来计算对象的哈希值,凡是无法计算哈希值(调用内置函数 hash() 时抛出异常)的对象都不能作为集合的元素,也不能作为字典对象的 “键”。
① 直接将集合赋值给变量即可创建一个集合对象。
x = {3, 4, 5, 6, 5} # 创建集合对象
print(type(x)) # 查看对象的类型
print(x)
② 可以使用 set() 函数将列表、元组、字符串、range 对象等其他可迭代对象转换为集合,如果原来的数据中存在重复元素,则在转换为集合的时候只保留一个;如果原序列或迭代对象中有不可哈希的值,无法转换为集合,抛出异常。
print(set(range(5, 15))) # 把range对象转换为集合
print(set([0, 1, 2, 3, 0, 1, 2, 3, 7, 8])) # 转换时自动去掉重复元素
print(set()) # 空集合
③ 除了列表推导式、生成器推导式、字典推导式外,Python 还支持使用集合推导式来快速生成集合。
print({x.strip() for x in (' he ', 'she ', ' I')})
from random import randint
x = {randint(1, 500) for i in range(100)} # 生成随机数,自动去除重复元素
print(len(x))
print({str(x) for x in range(10)})
④ 当不再使用某个集合时,可以使用 del 命令删除整个集合。