Python学习13-集合(set)

查看所有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}

你可能感兴趣的:(Python学习13-集合(set))