您的位置 首页 > 数码极客

set如何去重复—set如何保证不重复…

Python集合(set),是一个很有意思的数据结构。从形式上看,它像字典有key但没有value,它的写法是这样的s = {'a', 'b', 'c'},是不是像一个没有value的字典?另一方面,它又像是一个用花括号替换了方括号的列表,但它不能像列表那样用索引访问元素。

集合最常用的特性是元素不能重复,所以常用于去重。

1 li=[1,2,3,4,5,1,2,3] 2 li=list(set(li)) 3 print(li) li=[1,2,3,4,5]

其实,Python集合在内部实现上就是一个没有value的字典,所以它跟字典很像。既然和字典很像,那么还要集合干什么?集合主要用来干什么呢?

集合主要用于测试一个对象是不是在一堆对象集里面,也就是in运算。这个功能其实列表也可以,比如1 in [2,3,4,5],但是用列表的速度远远低于集合,尤其是在这一堆对象的数量非常大时。

列表因为是顺序存储的,它的查找时间复杂度是O(n),而集合是用hash table实现的,其时间复杂度是O(1)。

Python集合(set)的创建

集合可以通过set()来创建一个空集合,也可以把一个列表转换为集合。类似字典那样在花括号内可以放用逗号,隔开的多个对象:

跟字典的键不能是可变对象一样,集合里面也不能是列表、集合、字典:

Python集合(set)的访问

集合不能像列表那样通过索引访问内部某一个元素,只能通过遍历访问全部元素,或通过变量名访问整个集合:

集合相关的内置函数

Python内置了一些函数可以用于操作集合,它们是:

  1. len()
  2. 返回集合的长度,即集合包含的元素的个数。空集合的长度是0

  1. any()和all()
  2. 类似于对列表、tuple的操作。
  3. any(): 只要集合有一个元素为True则返回True;
  4. all(): 只有集合的所有元素都为True才返回True;

跟空字典一样,它却认为是所有元素都为True,all(set())返回True。

  1. sorted()
  2. 跟操作列表、tuple的效果一样,它把集合的所有元素进行排序

in 运算符

跟列表,元组一样,in用来检验一个对象是不是在集合中:

集合的内置方法:

(1)add(x)

把对象x添加到集合中。

(2)update()

把多个对象添加到集合中。

(3)discard(x) 和 remove(x)

这两个都是从集合中删除一个元素x。不同的是,如果x不在集合中,discard()会忽略;而remove()会抛出KeyError的错误:

(4)pop()

类似字典的pop()和列表的pop(),都是从其中删除一个元素并返回该元素。因为集合没有key和索引的概念,所以集合的pop()不带参数。

(5)clear()

清空一个集合

(6)copy()

跟字典的copy()一样,返回一个集合的深拷贝。

(7)union()

求两个或多个集合的并集,即把这些集合的所有元素放在一起组成新的集合并返回。它不改变原来的集合。

(8)intersection()

求两个或多个集合的交集,即把这些集合中共同含有的元素放在一起组合成新的集合并返回。同样它也不改变原来的集合。

(10)difference()

求一个集合S与另一个或多个集合的差集,即把只包含在集合S却不在做比较的集合中的元素组成新的集合并返回,同样它也不改变原来的集合。相当于集合的减法。

总结

集合是没有了value的字典,但它也有自己的个性。

练习

  1. 熟悉对集合的各种操作。
  2. 想一想集合可以和日常生活中哪些场景联系起来。

如果你觉得本文对你的学习有帮助的话,不妨点个赞呗。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“set如何去重复,set如何保证不重复,set如何判断重复,set对象去重复”边界阅读