Python2.3版本的时候,引入了一种新的数据类型——集合(set)。
集合是由序列(也可以是其他的可迭代的对象)构建的,是无序的可变的而数据类型。
Python中,集合用一对大括号"{}"表示,集合内的各个元素用逗号分隔。由不同元素组成的集合,集合是一组无序排列 可hash值,可作为字典的key;集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算,无须纠结于集合中的单个值,也就是说集合中是没有重复元素的。通过者一特点,可以将带有重复元素的列表通过代码转换成集合,可以做去重操作,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
s = set()
print(s)
# 结果:set()
print(type(s))
# 结果:<class 'set'>
s1 = {1, 2, 3}
print(s1)
# 结果:{1, 2, 3}
字典和集合的区别,字典虽然也是一对大括号,但是期内是键值对形式的,而集合是用逗号隔开元素的。我们也可以用set()函数将列表、元组等其他可迭代的对象转换为集合。
lst1 = ['台湾','香港','广州','台湾']
s = set(lst1)
print(s)
# 结果:{'台湾', '香港', '广州'}
可以看到结果,再转换的时候,集合会自动将元素去重,这也是集合的特性:集合内的每个元素都是唯一的,不可重复!
除此之外,集合的元素只能是不可变数据类型,也就是可哈希类型,而比如列表、字典和集合本身则不可做为集合的元素!
集合的基本操作
集合不支持什么操作:
集合不支持:索引、切片、复制、拼接
s = set(range(10))
print(s)
# 结果:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
print(s[1])
# 报错结果:TypeError: 'set' object is not subscriptable
print(s[0:5])
# 报错结果:TypeError: 'set' object is not subscriptable
set1 = {'a','b'}
set2 = set1 * 2
print(set2)
# 报错结果:TypeError: unsupported operand type(s) for *: 'set' and 'int'
通过 in 和 not in 判断元素是否存在
s = set(range(10))
print(1 in s)
# 结果:True
print(2 not in s)
# 结果: False
通过for 循环取值
s = set(range(50,66))
for i in s:
print(i)
# 结果:
''