集合
特点:
1.不同元素组成
2.无序
3.集合中的元素必须是不可变类型 集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据。
1. 集合的创建
1.1 使用 {} 创建
语法格式:set_name = {element1,element2,...,elementn}
a = {1, 'c', 1, (1, 2, 3), 'c'}
print(a) # out: {1, 'c', (1, 2, 3)}
1.2 set()函数创建集合
作用:将字符串、列表、元组、range() 对象等可迭代对象转换成集合
语法格式:set_name = set(iteration)
set1 = set("acbjkb")
set2 = set([1, 2, 3, 4, 5])
set3 = set((1, 2, 3, 4, 5))
print("set1:", set1) # out: set1: {'c', 'b', 'a', 'k', 'j'}(随机的)
print("set2:", set2) # out: set3: {1, 2, 3, 4, 5}
print("set3:", set3) # out: set3: {1, 2, 3, 4, 5}
2. 访问集合元素及向集合中添加元素
2. 1 访问集合元素最常用的方法:使用循环结构
作用:将集合中的数据逐一读取出来。
a = {1, 'c', 1, (1,2,3), 'c'}
for ele in a:
print(ele,end=' ') # out: 1 c (1, 2, 3)
2. 2 添加元素
只能是数字、字符串、元组或者布尔类型(True 和 False)值,不能添加列表、字典、集合这类可变的数据,否则 Python 解释器会报 TypeError 错误。
语法格式:set_name.add(element)
a = {1, 2, 3}
a.add((1, 2))
print(a) # out: {(1, 2), 1, 2, 3}
a.add([1, 2])
print(a) # out: 报错
3. 删除集合及集合中的元素
3. 1 删除集合
语法格式:del(set_name)
a = {1,'c',1,(1,2,3),'c'}
del(a)
3. 2 删除集合中指定元素
语法格式:set_name.remove(element) , set_name.discard(element)
a = {1, 2, 3}
a.remove(1)
print(a) # out: {2, 3}
a.remove(1)
print(a) # out: 报错,1已经被删除,因此不能再使用remove()方法删除
b = {4, 2, 3}
b.remove(1)
print(b) # out: {2, 3}
b.discard(1)
print(b) # out: {2, 3}
b.discard(1)
print(b) # out: {2, 3}
remove()
和discard()
的区别:当删除集合中元素失败时,remove()
方法会抛出错误,而discard()
方法不会抛出任何错误。
3.3 pop()和clear()方法
语法格式:set_name.pop() , set_name.clear()
s = {1, 2, 3, 4, 5, 6}
s.pop() # out: pop删除时是无序的随机删除
print(s) # out: {2, 3, 4, 5, 6}
s = {1, 2, 3, 4, 5, 6}
s.clear() # 清空集合
print(s) # out: set()
4.集合的运算
集合的运算:
交( & ):取两集合公共的元素
并( | ):取两集合全部的元素
差( - ):取一个集合中另一集合没有的元素
对称差( ^ ):取集合 A 和 B 中不属于 A&B 的元素
set1 = {1, 3, 5, 7}
set2 = {3, 6, 9, 12}
set1 & set2 # out: {3}
set1 | set2 # out: {1, 3, 5, 6, 7, 9, 12}
set1 - set2 # out: {1, 5, 7}
set2 - set1 # out: {9, 12, 6}
set1 ^ set2 # out: {1, 5, 6, 7, 9, 12}