查看所有Python相关学习笔记
集合(set)
集合是随机的,其元素是不重复的
自动去重
set0 = {1,2,3,4}
set1 = set([1,2,3,4])
set2 = set((1,2,3,4,1,2,3))
set3 = set('ddddsssdddaaddd')
print(set1)
print(set2)
print(set3)
# 执行结果
{1,2,3,4}
{1, 2, 3, 4}
{1, 2, 3, 4}
{'a', 'd', 's'}
对列表去重
先将列表转化为集合,再将集合转化为列表
转化后的列表是无序的
num1 = [1,2,3,5,3,2,1]
print(f'去重前:{num1}')
num1 = list(set(num1))
print(f'去重后:{num1}')
# 执行结果
去重前:[1, 2, 3, 5, 3, 2, 1]
去重后:[1, 2, 3, 5]
使用in和not in判断元素是否存在
num1 = set([1,2,3,5,3,2,1])
print(f'原集合:{num1}')
print(1 in num1)
# 执行结果
原集合:{1, 2, 3, 5}
True
使用for循环访问集合的值
num1 = set([1,2,3,5,3,2,1])
print(f'原集合:{num1}')
for i in num1:
print(i)
# 执行结果
原集合:{1, 2, 3, 5}
1
2
3
5
使用add新增元素
num1 = set([1,2,3,5,3,2,1])
print(f'原集合:{num1}')
num1.add(7)
print(f'add后的集合:{num1}')
# 执行结果
原集合:{1, 2, 3, 5}
add后的集合:{1, 2, 3, 5, 7}
使用remove删除元素
num1 = set([1,2,3,5,3,2,1])
print(f'原集合:{num1}')
num1.remove(1)
print(f'remove后的集合:{num1}')
# 执行结果
原集合:{1, 2, 3, 5}
remove后的集合:{2, 3, 5}
定义一个冻结集合frozenset(不可变集合)
num1 = frozenset([1,2,3,5,3,2,1])
print(f'原集合:{num1}')
# 执行结果
原集合:frozenset({1, 2, 3, 5})
- 尝试改变集合
num1 = frozenset([1,2,3,5,3,2,1])
print(f'原集合:{num1}')
num1.remove(1)
print(f'remove后的集合:{num1}')
# 执行结果
AttributeError: 'frozenset' object has no attribute 'remove'
- 取差集并集等(内部含可变元素,则不可用此方法)
set补充阅读
set补充阅读2
list1 = [1,2,4,5]
list2 = [1,2,3,(1,2)]
new_lesson1 = set(list2).difference(list1) # list2中存在,list1中不存在 等价于set(list2)-set(list1)
new_lesson2 = set(list2).symmetric_difference(list1) # list2中存在,list1中不存在 或 list1中存在,list2中不存在
print(new_lesson1)
print(new_lesson2)
# 执行结果
{(1, 2), 3}
{(1, 2), 3, 4, 5}