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. 想一想集合可以和日常生活中哪些场景联系起来。

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

python集合类型中的元素是有序的_python基础篇:很有意思的数据类型,集合(set) 常用去去重...相关推荐

  1. python集合类型中的元素是有序的_Python基础-2-变量和数据类型(2)-列表、元组、字典、集合...

    # ************************************************** ## 3.列表# ************************************** ...

  2. python集合类型中的元素是有序的_Python数据类型之集合set

    # 集合:用来存储一个无序的不重复的元素序列 # 集合的标识也是大括号{},中间的元素使用逗号","隔开 # 集合的创建方式: # set(序列) # s = {"123 ...

  3. python集合类型中的元素是有序的_数据类型;有序集合类型(sorted set)

    有序集合sortedset 一特点 1.有序.去重 2.元素是字符串类型 3.每个元素都关联着一个浮点数分值(score),并按照分支从小到大的顺序排列集合中的元素(分值可以相同) 4.最多包含2^3 ...

  4. 如何修改Series和DataFrame类型中的元素值_「ES6基础」Symbol介绍:独一无二的值

    ES6之前我们都清楚JS有六种数据类型:Undefined.Null.布尔值(Boolean).字符串(String).数值(Number).对象(Object),今天笔者讲的Symbol类型是ES6 ...

  5. Python 获取list 中指定元素出现的次数

    Python 获取list 中指定元素出现的次数 使用list 的count 方法 list_a = [1, 2, 3, 1, 4, 5, 1] print("1 出现的次数: %d&quo ...

  6. python 替换字符串中的元素

    python 替换字符串中的元素 def str_replace(old_str,old,new):"""在 old_str 字符串中,把 old 替换成 new:par ...

  7. Python返回列表中某个元素的出现次数list.count()方法

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] Python返回列表中某个元素的出现次数 list.count()方法 选择题 请问以下Python代码输出的结果是什么 ...

  8. python取出frozenset中的元素存到列表list

    python取出frozenset中的元素存到列表 由于frozenset中的元素不能像set一样进行增加(.add())也不能减少(.remove)操作 所以我们希望用列表list来存frozens ...

  9. python 判断list 中重复元素最后1次出现的位置

    方法 1 把list 转string 之后使用rfind python 判断list 中重复元素最后1次出现的位置 ,list 中没有直接方法判断 不过string 有find 和 rfind的 ,f ...

最新文章

  1. 解决push的时候有时候会卡一下的问题
  2. udp tcp ip 校验和对比
  3. JAVA之JVM GC 机制与性能优化
  4. stm32f103插拔pc端的串口引起的问题及解决办法
  5. spring cloud eureka注册原理-注册失败填坑
  6. 一些CFD名词缩写的含义(持续更新中)
  7. 《深入浅出通信原理》一句话短评
  8. idea设置护眼主题
  9. 【POJ】1321-棋盘问题 n皇后、dfs
  10. 408计算机组成原理学习:数据的表示与计算
  11. [jzoj5236]【NOIP2017模拟8.7A组】利普希茨
  12. vue生命周期(简短精干篇)
  13. 360安全安卫士自带的卸载程序的文件在哪里
  14. 微信小程序 - 无法获取云端数据库中的数据的问题(修改云端数据库权限)
  15. apt安装golang
  16. 6.亿级流量电商详情页系统实战
  17. zigbee 问题一:协调器究竟如何选择信道?
  18. 003问题:约瑟夫问题(筛法解决)
  19. android dex文件过多,意外的最高级别异常:com.android.dex.DexException:定义了多个dex文件...
  20. 【Vue.js】Vue.js组件库Element中的单选框、多选框、输入框和计数器

热门文章

  1. ubuntu 上安装mysql
  2. VS2008 Web Application和Web Site的区别[转]
  3. 刚刚,任正非为姚安娜商标事件道歉
  4. 声明式智能推荐系统应用架构探索
  5. 【报告分享】京东大数据202女性消费趋势报告.pdf(附下载链接)
  6. 【报告分享】抖音蓝V账号定位及外化罗盘.pdf(附下载链接)
  7. 解压tar.xz文件和tar.gz文件
  8. 水土不服?谈一谈机器学习在金融风控实践经验
  9. python session模块_Python requests模块session代码实例
  10. java 删除.svn_使用JAVA的程序删除项目中的SVN目录