欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

集合

程序员文章站 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的补集。

相关标签: 集合