Python中的集合

集合(set)是 无序的 、 不重复的 元素集合。

1,集合的创建

使用大括号 { } 或者 set() 函数创建集合。注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。下面是例子:

set1 = {1, 2, 3}  #创建一个包含1,2,3三个元素的集合
set2 = set(())    #创建空的集合必须用set(),使用set来创建集合时要注意这个双括号
set3 = set(("a", 1, "b"))
print(set1)  #{1, 2, 3}
print(set2)  #set()
print(set3)  #{1, 'a', 'b'}

注意:集合是 无序 的,因此你无法确定元素的显示顺序,所以你的运行结果可能和我不一样,下面的所有例子也有可能和我不一样。

2,集合的操作

2.1求集合的长度

求集合的长度可以使用 len() 方法,该方法很常用,len()还能求列表、元组的长度:

set4 = {1, 23, 'a', "sd"}
print(len(set4))        #4

2.2判断一个元素是否在集合中

可以使用 in 关键字判断一个元素是否在集合中:

set5 = {1, 'd', "df", 3}
print(1 in set5)       #True
print('a' in set5)     #False

2.3集合的运算

在集合中可以使用 - 、 | 、 & 、 ^ 来对集合进行运算:

a = set("abcd")
b = set('defg')
print(a)   #{'d', 'a', 'b', 'c'}
print(b)   #{'e', 'g', 'f', 'd'}print(a - b)   #{'c', 'b', 'a'} 包含在集合a中但不包含在集合b中的元素print(a | b)   #{'c', 'd', 'a', 'e', 'b', 'f', 'g'}  集合a和集合b中的所有元素,由于集合中的元素不能重复,因此只有一个dprint(a & b)   #{'d'}  既包含在集合a中,又包含在集合b中的元素print(a ^ b)   #{'g', 'f', 'e', 'a', 'c', 'b'}  不同时包含在集合a和集合b中的元素

2.4向集合中添加元素

如果只是将一个元素添加到集合中,使用 add() 方法,但需要注意的是,因为集合中的元素是不能重复的,所以,如果添加进集合的元素在集合中已经存在,则不会执行任何操作:

set7 = {'a', 1, 'b', 3}
set7.add(2)    #当要加进集合中的元素在集合中不存在时,能加入
print(set7)    #{1, 2, 3, 'b', 'a'}
set7.add('a')  #当要加进集合中的元素在集合中已经存在时,不会执行任何操作
print(set7)    #{1, 2, 3, 'b', 'a'}

如果要将多个元素添加进集合中,则要使用 update() ,这个方法也能列表,元组,字典等加入集合中,如果要加入的元素有多个,使用 ,将其隔开:

set8 = set(('a', 'b'))set8.update('c', 'd')    #一次将多个元素加入到集合中
print(set8)   #{'d', 'a', 'c', 'b'}set8.update([100,200], [300, 500])   #将多个列表中的元素都加入到集合中
print(set8)   #{'b', 100, 200, 300, 500, 'd', 'c', 'a'}set8.update((-1, -2), (-3, -4))      #将多个元组中的元素都加入到集合中
print(set8)   #{'a', 100, 'b', 200, 300, 'd', 500, 'c', -2, -4, -3, -1}set8.update({'集', '合'}, {'加', '入'})   #将多个集合中的所有元素加入到集合中
print(set8)   #{'合', 'b', 100, 'c', '集', 200, 'd', 300, 'a', '加', 500, -2, '入', -4, -3, -1}

2.5删除集合中的元素

想要删除集合中的元素,可以使用 remove() 方法,但值得 注意 的是:用remove()方法移除集合中的元素在集合中不存在时,将发生错误。
因此,可以使用 discard() 方法,discard()方法在移除集合中不存在的元素时不会发生错误。

set9 = {'a', 'b', 'c'}set9.remove('a')
print(set9)          #{'b', 'c'}   使用remove()方法删除集合中存在的元素,删除成功!# set9.remove('d')     #因为d不在集合中,使用remove()方法将报错set9.discard('d')      #使用discard()方法删除集合中不存在的元素,不会报错,啥也没做
print(set9)            #{'b', 'c'

其实,还有一种可以删除集合中的随机元素的方法,它是 pop() ,为什么是随机的呢?因为集合(set)的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左边第一个元素进行删除。

set10 = {"ss", "sdf", "gd", "df"}
print(set10.pop())   #df  执行结果可能和我不一样,因为是随机的
print(set10.pop())   #ss
print(set10)         #{3, 4}

2.6清空集合

可以使用 clear() 方法来清空一个集合中的所有元素,即集合将变为一个空集合。当然,使用del可以将集合变量删除。

set11 = {'a', 'b', 'c'}
set11.clear()  #使用clear()方法清空集合
print(set11)   #set()
set12 = {'a', 'b', 'c'}
del set12
print(set12)   #将发生错误,因为set12这个变量已经被删除

Python中的集合相关推荐

  1. python中两个集合的运算并交补_三种方式实现 Python 中的集合的交、并、补运算...

    文章目录 三种方式实现 Python 中的集合的交.并.补运算 一 背景 集合这个概念在我们高中阶段就有所了解,毕业已多年,我们一起回顾一下几个集合相关的基本概念吧? 集合是指具有某种特定性质的具体的 ...

  2. python集合的概念_用Python中的集合Set讲解演示高一数学集合的概念

    数学编程不分家,用Python可以方便的表示高中数学知识.现在以集合为例进行讲解,高一数学设计集的概念,讲解了交并补的相关知识,用Python中的集合类型可以方便的表示.同时可以借助数学知识更好的理解 ...

  3. python交并补符号_三种方式实现 Python 中的集合的交、并、补运算-阿里云开发者社区...

    三种方式实现 Python 中的集合的交.并.补运算 一 背景 集合这个概念在我们高中阶段就有所了解,毕业已多年,我们一起回顾一下几个集合相关的基本概念吧? 集合是指具有某种特定性质的具体的或抽象的对 ...

  4. 站长在线零基础Python完全自学教程18:Python中的集合完全解读

    欢迎你来到站长学堂,学习站长在线出品的在线课程<零基础 Python完全自学教程>今天给大家分享的是第18课< Python中的集合完全解读>.本节课是一个大课,我分了这些知识 ...

  5. python集合类型的四种操作符_深入解析Python中的集合类型操作符

    (1)标准类型操作符(所有的集合类型) 成员关系 (in, not in) 就序列而言,Python中的in和not in操作符决定某个元素是否是一个集合中的成员. 集合等价/不等价 等价/不等价被用 ...

  6. python中的集合类型_Python中的集合类型知识讲解

    >>> s.add('z') >>> s set(['c', 'e', 'h', 'o', 'p', 's', 'z']) >>> s.updat ...

  7. python中difference_Python 集合 symmetric_difference() 使用方法及示例

    Python 集合 symmetric_difference() 使用方法及示例 Python symmetric_difference()方法返回两组对称差集. 两个集合A和B的对称差是在A或B中的 ...

  8. python中的集合set类型是可变的吗_[Python] Python数据类型(三)集合类型之set集合和frozenset集合...

    1.集合基本概念 集合是0-n个对象引用的无序组合,集合中存储的元素不可重复,因此这些对象引用的引用的对象必须是可哈希运算的 .  1.python中提供了两种内置的集合类型:可变的set类型和固定的 ...

  9. 集合遍历python_遍历Python中的集合

    在本文中,我们将学习在Python 3.x中对集合进行遍历/遍历.或更早. 它是对象的无序集合,没有任何重复.这可以通过将所有元素括在花括号内来完成.我们还可以通过关键字" set" ...

最新文章

  1. c++设计一个不能被继承的类
  2. datagrid数据表格当数据为0的时候页面不显示数据
  3. 耳机不分主从是什么意思_强悍的配置,百元级的价格,Xisem西圣 Ares战神蓝牙耳机体验...
  4. Spark中Data skew(数据倾斜)Java+Python+Scala三种接口完整代码
  5. linux pmap was java,jvm 《九》pmap linux 命令介绍 及使用
  6. ethtool用法 linux_Linux命令之Ethtool用法详解
  7. Springboot之actuator配置不当漏洞RCE(jolokia)
  8. javascript 函数初探 (六)--- 闭包初探#4
  9. java 数组的应用(一维)
  10. 如何查看centos系统版本以及配置信息
  11. PHP-FPM 配置文件详解
  12. qt中使用日志系统,自定义日志彩色输出,qt日志写入文件,自定义qt日志格式,同时提供Qt日志重定向功能(将qDebug信息输出到界面控件)
  13. unity开发 斗地主算法—判断手里的牌是否有大于上家的牌(是否显示要不起按钮)
  14. 动态拨号主机多IP随机分配拨号自动分配
  15. Linux下ps -ef 和 ps aux 的区别及格式详解
  16. hd530黑苹果硬解_解决黑苹果HD3000核显 VGA和HDMI外接显示器无反应问题
  17. Linux的Locale
  18. parameter estimation for text analysis
  19. [MAUI]模仿微信“按住-说话”的交互实现
  20. CF28B pSort 解题报告

热门文章

  1. 音视频技术开发周刊 | 233
  2. 快手QoE指标设计的分析初探
  3. YouTube高效传输策略:节省14%带宽 用户体验提升
  4. 「递归」第9集 | 我在腾讯做研究
  5. 这才是真正的Git——Git实用技巧
  6. 万字长文 | 漫谈libco协程设计及实现
  7. linux平台关于内存,cpu,连接数,流量监控(一)
  8. 初学者如何选择合适的机器学习算法(附算法速查表)
  9. Webpack2的基本使用
  10. Spark2.3.0的DataFrame去哪了,DataSet是哪位?