一、了解集合:
1、创建集合:
使用 {} 或 set() , 但是如果要创建空集合只能使用 set() ,因为 {} 用来创建空字典。
2、集合的特点:
- 集合中没有重复数据,可以用集合来去除重复数据;
- 集合数据是无序的,故不支持下标
3、集合常见的操作方法:
-
增加
add():追加数据
update():追加的数据是序列 -
删除
remove():删除集合中的指定数据,如果数据不存在则报错
discard():删除集合中的指定数据,如果数据不存在也不会报错
pop():随机删除集合中的某个数据,并返回这个数据 -
查找判断:
in:判断数据在集合序列
not in:判断数据不在集合序列
二、集合实操
1、创建集合
{}创建集合
# 创建有数据的集合,用{}
set1 = {1, 2, 3, 4, 5, 3}
print(set1) # {1, 2, 3, 4, 5},对重复的3进行了去重
print(type(set1)) # <class 'set'>
set创建集合()
# 创建空集合,只能用set(),因为{}是用来创建空字典的!!!
set1 = set()
print(set1) # set()
print(type(set1)) # <class 'set'>
2、增加数据
add()
一次只能增加一个数据
set1 = {10, 20, 30, 40, 50}
# 增加一个集合中没有的数据
set1.add(100)
print(set1)
# 输出:{100, 40, 10, 50, 20, 30} 可以看出输出的数据是无序的,且与代码中的数据的书写顺序不一致
# 增加一个集合中有的数据
set1.add(10)
print(set1)
# 输出:{100, 40, 10, 50, 20, 30} 因为集合中已经有10,所以不做任何新增操作,也不报错
尝试利用add增加两个数据,失败。
set1.add(10, 20) # TypeError: add() takes exactly one argument (2 given)
set1.add([10, 20]) # TypeError: unhashable type: 'list'
update()
只能增加可迭代对象,将序列的元素逐一增加到集合当中
类似于extend
尝试增加整型数据,报错
set1.update(100)
# TypeError: 'int' object is not iterable int不是可迭代对象
将序列的元素逐一增加到集合
# 可以通过for...in...这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable),可以粗暴地理解可以遍历的数据类型就是可迭代对象。
set1.update([1, 2])
print(set1) # {1, 2, 100, 40, 10, 50, 20, 30}
set1.update('123')
print(set1)
# 输出:{1, 2, '2', 100, '1', '3', 40, 10, 50, 20, 30}
3、删除数据 (重点:remove、discard)
remove()
删除指定数据,数据不存在则报错
set1 = {10, 20, 30, 40, 50}
set1.remove(10)
print(set1) # {40, 50, 20, 30}
# 删除不存在的数据
set1.remove(100)
print(set1) # KeyError: 100 删除的数据在集合中不存在,【报错】
discard()
删除指定数据,如果数据不存在也不会报错
set1 = {10, 20, 30, 40, 50}
set1.discard(10)
print(set1) # {40, 50, 20, 30}
set1.discard(100)
print(set1) # {40, 50, 20, 30} 删除的数据在集合中不存在,【不报错】
pop()
随机删除一个数据,并返回被删除的数据
set1 = {10, 20, 30, 40, 50}
del_num = set1.pop()
print(del_num) # 40
print(set1) # {10, 50, 20, 30}
clear()
清除数据
# clear
set1 = {10, 20, 30, 40, 50}
set1.clear()
print(set1) # set()
4、查找判断
- in: 数据存在于集合之中,返回True
- not in: 数据存在于集合之中,返回False
set1 = {10, 20, 30, 40, 50}
print(10 in set1) # True
print(10 not in set1) # False