set 集合


在Python中,set是基本数据类型的一种集合类型。

  • set 数组是一组key值,不包含重复元素。
  • set 数组是可变的、无序的、有限的集合,其元素是唯一的、不可变的。
  • set 数组没有(不支持)索引和切片操作。

set有可变集合(set)和不可变集合(frozenset)两种,其中

  • set:可以原地修改,或者说是可变的,也可以说是 unhashable(不可哈希)的。
  • frozenset:是一个被“冻结”的集合,不能原地修改,是 hashable(可哈希)的。

一、set的创建

(1)直接创建

方式:将所有项(元素)放在花括号“{}”内,以逗号“,”分隔。

集合元素:集合可以有任意数量的元素,它们可以是不同的类型(例如:数字、元组、字符串等)。但是,集合不能有可变元素(例如:列表、集合或字典)。

>>> a = {1,2,3,4,'a'}
>>> type(a)
<class 'set'>

(2)通过set()、frozenset()创建

python中,set类是在python的sets模块中,不需要导入sets模块可以直接创建集合。

>>>set('boy')
set(['y', 'b', 'o'])

(3)创建空的set集合

创建空集合比较特殊。
在 Python 中,空花括号“{}”用于创建空字典。要创建一个没有任何元素的集合,使用set()函数(不要包含任何参数)。

>>> a = set()
>>> a
set()
>>> b = {}
>>> type(a),type(b)
(<class 'set'>, <class 'dict'>)

ps:创建set例子


二、set操作

(1) in

in关键字,判断某key是否在set中,并返回True or False。

>>> s = set([1,2,3,2,1,3,4,5])
>>> s
{1, 2, 3, 4, 5}

(2)add(key)

add()方法:添加元素到set中。可以重复添加,but没有效果,因为set中元素唯一性,会过滤重复的元素。

>>> s.add(6)
>>> s
{1, 2, 3, 4, 5, 6}

(3)update()

update():将参数添加到set中并返回一个set,自动过滤重复元素。
update()方法既可以带一个单参数,也可以带一个or多个set,就好像多次调用add()。

(4)remove(key)、discard(key)

remove(key)、discard(key)删除指定元素。
区别:其中remove()删除不存在的key时会返回报错,而discard()不会。

>>> a_set = {1,2,3,6,10,15,21,28,36,45}
>>> a_set
{1, 2, 3, 36, 6, 10, 45, 15, 21, 28}    # 并不一定是按填写的顺序
>>> a_set.discard(10)
>>> a_set
{1, 2, 3, 36, 6, 45, 15, 21, 28}
>>> a_set.remove(21)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
KeyError: 21

(5)pop()

pop()函数不需要带任何参数,将set中的第一个元素删除。

>>> a_set.pop()
1
>>> a_set
{2, 3, 36, 6, 45, 15, 28}

(6)clear()

clear()函数,清空set,集合仍存在,只不过为空集合。

>>> a_set.clear()
>>> a_set
set()

(7)del 删除一个元素

语法形式:del set_name


三、集合操作

set可以看成数学意义上的无序、无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作。

  • 交集:两个set集合之间所有的元素,操作符号为“&”或者intersection()函数;
  • 并集:两个set集合之间共有的元素,操作符号为“|”或者union()函数;
  • 差集:在a集合中但不在b集合中,方法为difference()函数;
  • symmetric_difference():在a集合中不在b集合中 and 在b集合中不在a集合中。
举几个例子:
>>> s1 =set([1,3,6])
>>> s & s1        # and
{1, 3, 6}
>>> s | s1         # or
{1, 2, 3, 5, 6}
>>> a_set = {1,2,3,4,5,6,7,8,9,0}
>>> b_set = {1,2,3,4,5,11,12,13,14,15}
>>> a_set.union(b_set)             # 并集|,或者直接a_set | b_set
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15}
>>> a_set.intersection(b_set)     # 交集&,或者直接使用 a_set & b_set
{1, 2, 3, 4, 5}
>>> a_set.difference(b_set)     # 差集,在a中但不在b中
{0, 6, 7, 8, 9}
>>> a_set.symmetric_difference(b_set) #在a中不在b中 and 在b中不在a中
{0, 6, 7, 8, 9, 11, 12, 13, 14, 15}
  • issubset():判断集合是否为某集合的子集,返回True or False。

  • issuperset():判断集合是否为某集合的父集,返回True or False。


❤ thanks for watching, keep on updating...

Python数据类型 - set 集合相关推荐

  1. Python组合数据类型之集合类型

    单元概述 主要解决问题:让程序更好地处理一组数据 三类重要组合数据类型:集合类型.序列类型和字典类型 学完本章,我们能够在头脑中建立集合.序列和字典的模式来表达对一组数据的表达和处理 1. 定义 集合 ...

  2. set集合判断集合中是否有无元素_集合 (Set) | 一山不容二虎的 Python 数据类型

    点击上方"可乐python说"关注公众号,点击右上角 "..."选择"设为星标"第一时间获取最新分享! 前言 Hi,大家好,我是可乐, 今天 ...

  3. Python 数据类型

    Python主要数据类型包括list(列表).tuple(元组).dict(字典)和set(集合)等对象,下面逐一介绍这些Python数据类型. list(列表)是Python内置的一种数据类型,作为 ...

  4. python中用于标识字符串的定界符_Python合集之Python数据类型(二)

    在上一节的合集中,我们了解了Python数据类型中的数值类型的相关知识,本节我们将进一步了解一下Python中关于数据类型中的字符串及布尔类型相关的知识. 1. 字符串类型 字符串是连续的字符序列,可 ...

  5. python数据类型-Python语言基本数据类型

    本文主要向大家介绍了Python语言基本数据类型,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. python标准数据类型 有六个标准的数据类型: 1.Number(数字) 2.S ...

  6. Python 数据类型及其用法

    本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁. 基本结构 我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点型以及布尔类型.这些基本数据类型组 ...

  7. Python 数据类型之字典

    Python 数据类型之字典 键值对的无序集合 键和值必须成对出现 只能通过键获取值创建字典创建字典和创建集合类似应当指定键值对而不是值>>> a_dict = {'Name':'S ...

  8. python数据类型转换原因_浅谈Python数据类型之间的转换

    Python数据类型之间的转换 函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 compl ...

  9. python中表示单一数据的类型被称为_各种Python数据类型的完整列表

    各种Python数据类型的完整列表 如今,Python是最受欢迎的编程语言之一.它允许开发人员将所有精力都放在实现上,而不是将复杂的程序和python中的数据类型用于此目的只是为了简化我们的工作. P ...

最新文章

  1. 2018 年值得关注的 Web 设计趋势
  2. TF-IDF与余弦相似性的应用(一):自动提取关键词
  3. python基础——数字型
  4. 移动web开发(三)——字体使用
  5. 10 有关业务/事件类型WQ在年2021的号码范围不存在
  6. 面向对象(类/对象/封装/继承/static/内存类加载)
  7. phpcmsv9全站搜索,不限模型
  8. 贝叶斯公式的共轭分布
  9. java继承小程序_Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)...
  10. Visual Studio自动生成XML类和JSON类
  11. 软件项目管理第十章笔记---项目采购管理
  12. 如何将风险应用加入白名单_vivo手机怎么把风险应用添加到白名单
  13. 用Fiddler做抓包分析详解
  14. 泛微E-Office文件上传漏洞(CNVD-2021-49104)
  15. 小程序----文字竖排
  16. 小男孩学机器人编程好还是学钢琴好
  17. python开发cs程序_CSE209代做、代写Computer Graphics、代做CS/python编程设计代写Python程序|代做Processing...
  18. 上海工程技术大学计算机专硕,上海工程技术大学2019年硕士研究生调剂公告
  19. php接口增加白名单,使用laravel中间件来添加指定请求的白名单
  20. 人脸识别活体检测之张张嘴和眨眨眼——readme

热门文章

  1. mysql8 php7_windows10-nginx-mysql8.0-php7.0环境搭建
  2. 公司--超级链接跳转和表单提交,删除的表单提交和删除失败的提示信息
  3. 字符串 拼接方法,公司内部的方法,用集合转换成拼接的字符串
  4. linux qt wifi连接,贡献自己写的,在linux,arm下的屏幕搜索wifi并连接(qt,多选择,wifi按信号排列)...
  5. oracle SQL以结尾函数,Oracle学习笔记--SQL查询和SQL函数(转) -- 迷失de天空 -- 编程爱好者......
  6. c3p0对mysql配置_c3p0的常用配置方式
  7. 运动桁架下压力信号采集与处理
  8. 在CDF可以插入特殊字符编码
  9. 一款蓝牙音频无线传输设备上拆下的光电管
  10. logit方程怎么写_一元四次方程的常规解法