集合set 是一种可迭代的、无序的、不能包含重复元素是数据结构。
集合
又分为可变集合set和不可变集合(frozenset)
可变集合
创建可变集合
可变集合类型的 set ,创建可变集合可以使用set([iterable])函数,或者使用大括号{},逗号隔开
a = {'李白','李四','李四'}
len(a) 结果:2
set((10,21,34,12))
要创建空的集合不能使用 {} 表示
b = {}
type(b) 结果:<class 'dist'>
创建空集合要使用:a = set()
修改可变集合
可变集合类似与列表,可以被修改,插入、删除
- add(elem):添加元素,如果元素存在就不能添加,不会抛出错误
- remove(elem):删除元素,如果元素不存在,会抛出错误
- discard(elem):删除元素,如果元素不存在,不会抛出错误
- pop():删除集合中的任意一个元素,返回值是删除的元素
- clear():清除集合
a = {'李','白','呗'}
a.add('黑')
print(a)
a.remove('黑')
a.remove('黑')
a.discard('黑')
a.pop()
a.clear()
遍历集合
集合是无序的,没有索引,不能通过下标访问单个元素
for item in a:
print(item)
for i, item in enumerate(a):
print('{0} - {1}'.format(i, item))
此时的 i 不是索引,只是遍历集合的次数
不可变集合
不可变集合类型的frozenset,创建不可变集合应使用frozenset([itemable])函数,不能使用 {}
a = frozenset({'李','白','呗'})
a.add('1') 会报错
b = (1,2,3)
seta = frozenset(b)
集合推导式
集合推导式类似与列表推导式,区别只是输出结果是集合
a_set = {x for x in range(100) if x % 2 == 0 if x % 5 == 0}
a_list = [2,3,2,5,5,5]
n_list = [x ** 2 for x in a_list]
n_set = {x ** 2 for x in a_list}