集合
程序员文章站
2022-05-03 08:07:24
...
集合
特点:无序的,元素不能重复
使用场景:只关心元素是否出现,不管先出现顺序和次数
常用来‘去重’,检查元素是否出现过;求交,并,补集
语法:大括号括住,里面逗号分隔里面单个项,跟字典里的键值对不同
创建
1.创建空集合
set1 = set()
2.创建非空集合
set1 = {‘a’, ‘b’, ‘c’}
大括号括住,里面每一个元素不是键值对,跟列表项类似。
3.去重,自动去重
语法:set([])
添加项
set1 = {'a', 'b', 'c'}
set1.add('d')
set1 → {'a', 'b', 'd', 'c'} 可以看出集合无序特性
删除项
1.remove()根据项删除
set1 = {'a','b','c','d'}
set1.remove('a')
print(set1)
2.全部删除
set1 = {'a','b','c','d'}
set1.clear()
print(set1)
3.pop()从集合里删除一个元素并返回,如果集合空的话会报错
set4 = {2,5,8,7}
set4.pop()
print(set4)
去重
1.可以保持之前的排列顺序
a = [1,2,3,3,4,2,3,4,5,6,1]
b = []
for i in a:
if i not in b:
b.append(i)
print(b)
2.通过set方法进行去重,不能保持之前的排列顺序
a = [1,4,3,3,4,2,3,4,5,6,1]
a = list(set(a)) # 以转化为列表的方式进行去重,列表中的每一项不能重复
print(a)
3.使用itertools模块
sort函数 sort并不是简单的快速排序,它对普通的快速排序进行了优化,
此外,它还结合了插入排序和推排序。系统会根据你的数据形式和数据量自动选择合适的排序方法,
这并不是说它每次排序只选择一种方法,它是在一次完整排序中不同的情况选用不同方法。
import itertools
a = [1,4,3,3,4,2,3,4,5,6,1]
a.sort()
it = itertools.groupby(a)
for k, g in it:
print(k)
4.无法保持原有的顺序
list = [1,4,3,3,4,2,3,4,5,6,1]
liebiao=set(list)
print(list)
交、并、差、补
1.并集 数学标记∪,程序符号是 | 。
。注意集合运算用的是自己一套运算符号,不能用and or之类比较条件的符号。
并集表示一个元素可能属于集合A,或者属于集合B。
set1 = {1,2,3}
set2 = {3,6,7}
set1 | set2 → {1, 2, 3, 6, 7}
2.交集 。 数学标记 ∩,程序中的符号是&。
一个元素既属于集合A又属于集合B。
set1 = {1,2,3}
set2 = {3, 6, 7}
set1 & set2 → {3}
3.差集。 程序符号 - 。
A-B表示一个元素属于但不属于集合B
set1 = {1,2,3}
set2 = {3, 6, 7}
set1 - set2 → {1, 2}
4.子集 补集。
子集。集合B的每一个元素都属于集合A,A包含B,B是A的子集。
补集。在A中,属于A但不属于B,叫B的补集。
上一篇: python语言基础+课后练习day03