定义:

1.不同元素组成

2.无序

3.集合中的元素必须是不可变类型

创建集合

1
= {1,2,3,4,5,6,7,8}

1.定义可变集合

1
2
3
>>> set_test = set('hello')
>>> set_test
{'h''l''e''o'}

2.定义不可变集合

1
2
3
4
5
6
>>> set_test = set('hello')
>>> set_test
{'h''l''e''o'}  # 由此可见集合中的元素不可重复,都是不同的
>>> n_set_test = frozenset(set_test)
>>> n_set_test
frozenset({'h''l''e''o'})

集合运算

集合之间也可进行数学集合运算(例如:并集、交集等),可用相应的操作符或方法来实现。

子集

  子集,为某个集合中一部分的集合,故亦称部分集合。

  使用操作符 < 执行子集操作,同样地,也可使用方法 issubset() 完成。

1
2
3
4
5
6
7
8
9
>>> A = set('abcd')
>>> B = set('cdef')
>>> C = set("ab")
>>> C < A
True         # C 是 A 的子集
>>> C < B
False
>>> C.issubset(A)
True        

并集 

  一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。

  使用操作符 | 执行并集操作,同样地,也可使用方法 union() 完成。

1
2
3
4
>>> A | B
{'c''b''f''d''e''a'}
>>> A.union(B)
{'c''b''f''d''e''a'}

交集

  两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。

  使用 & 操作符执行交集操作,同样地,也可使用方法 intersection() 完成。

1
2
3
4
>>> A & B
{'c''d'}
>>> A.intersection(B)
{'c''d'}

差集

  A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合

  使用操作符 - 执行差集操作,同样地,也可使用方法 difference() 完成。

1
2
3
4
>>> A - B
{'b''a'}
>>> A.difference(B)
{'b''a'}

对称差

  两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。

  使用 ^ 操作符执行差集操作,同样地,也可使用方法 symmetric_difference() 完成。

1
2
3
4
>>> A ^ B
{'b''f''e''a'}
>>> A.symmetric_difference(B)
{'b''f''e''a'}

  

集合方法

1.add 向集合中添加元素

1
2
3
4
>>> s = {123456}
>>> s.add("s")
>>> s
{123456's'}

2.clear 清空集合

1
2
3
4
>>> s = {123456}
>>> s.clear()
>>> s
set()

3.copy 返回集合的浅拷贝

1
2
3
4
>>> s = {123456}
>>> new_s = s.copy()
>>> new_s
{123456}

4.pop 删除并返回任意的集合元素(如果集合为空,会引发 KeyError)

1
2
3
4
5
>>> s = {123456}
>>> s.pop()  # pop删除时是无序的随机删除
1
>>> s
{23456}

5.remove 删除集合中的一个元素(如果元素不存在,会引发 KeyError)

1
2
3
4
>>> s = {123456}
>>> s.remove(3)
>>> s
{12456}

6.discard 删除集合中的一个元素(如果元素不存在,则不执行任何操作)

1
2
3
4
>>> s = {123456}
>>> s.discard("sb")
>>> s
{123456}

7.intersection 将两个集合的交集作为一个新集合返回

1
2
3
4
5
6
>>> s = {123456}
>>> s2 = {345678}
>>> s.intersection(s2)
{3456}
>>> s&s2  # 可以达到相同的效果
{3456}

8.union 将集合的并集作为一个新集合返回

1
2
3
4
5
6
>>> s = {123456}
>>> s2 = {345678}
>>> print(s.union(s2))
{12345678}
>>> print(s|s2)    # 用 | 可以达到相同效果
{12345678}

9.difference 将两个或多个集合的差集作为一个新集合返回 

1
2
3
4
5
6
7
8
9
10
>>> s = {123456}
>>> s2 = {345678}
>>> print("差集:",s.difference(s2)) # 去除s和s2中相同元素,删除s2 保留s中剩余元素
差集: {12}
>>> print("差集:",s2.difference(s))  # 去除s和s2中相同元素,删除s2 保留s2中剩余元素<br>
差集: {87}
>>> print("差集:",s - s2)    # 符号 - 可以达到相同结果
差集: {12}
>>> print("差集:",s2 - s)    # 符号 - 可以达到相同结果
差集: {87}

10. symmetric_difference 将两个集合的对称差作为一个新集合返回(两个集合合并删除相同部分,其余保留) 

1
2
3
4
>>> s = {123456}
>>> s2 = {345678}
>>> s.symmetric_difference(s2)
{1278}

11.update 用自己和另一个的并集来更新这个集合

1
2
3
4
5
6
7
>>> s = {'p''y'}
>>> s.update(['t''h''o''n'])    # 添加多个元素
>>> s
{'p''t''o''y''h''n'}
>>> s.update(['H''e'], {'l''l''o'})    # 添加列表和集合
>>> s
{'p''H''t''l''o''y''e''h''n'}

12.intersection_update()  用自己和另一个的交集来更新这个集合

1
2
3
4
5
>>> s = {'a''b''c''d''q'}
>>> s2 = {'c''d''e''f'}
>>> s.intersection_update(s2)   # 相当于s = s - s2
>>> s
{'c''d'}

13.isdisjoint()  如果两个集合有一个空交集,返回 True

1
2
3
4
5
6
7
>>> s = {12}
>>> s1 = {34}
>>> s2 = {23}
>>> s.isdisjoint(s1)   
True                               # s  和 s1 两个集合的交集为空返回 True
>>> s.isdisjoint(s2)
False                             # s  和 s2 两个集合的交集为 2 不是空 所有返回False

14.issubset() 如果另一个集合包含这个集合,返回 True

1
2
3
4
5
6
7
>>> s = {123}
>>> s1 = {1234}
>>> s2 = {23}
>>> s.issubset(s1)
True                            # 因为 s1 集合 包含 s 集合
>>> s.issubset(s2)
False                           # s2 集合 不包含 s 集合

15.issuperset()  如果这个集合包含另一个集合,返回 True

1
2
3
4
5
6
7
>>> s = {123}
>>> s1 = {1234}
>>> s2 = {23}
>>> s.issuperset(s1)
False                                        # s 集合不包含 s1 集合
>>> s.issuperset(s2)
True                                         # s 集合包含 s2 集合                                     

16.difference_update() 从这个集合中删除另一个集合的所有元素

1
2
3
4
5
6
7
8
9
>>> s = {123}
>>> s1 = {1234}
>>> s2 = {23}
>>> s.difference_update(s2)
>>> s
{1}                                                   # s2中的2,3   s集合中也有2,3  所以保留1
>>> s1.difference_update(s2)
>>> s1
{14}

  

17.symmetric_difference_update() 用自己和另一个的对称差来更新这个集合

1
2
3
4
5
6
7
8
9
10
11
12
>>> s = {123}
>>> s1 = {1234}
>>> s2 = {23}
>>> s1.symmetric_difference_update(s)
>>> s1
{4}
>>> s1.symmetric_difference_update(s2)
>>> s1
{234}
>>> s.symmetric_difference_update(s2)
>>> s
{1}

集合与内置函数

下述内置函数通常作用于集合,来执行不同的任务。

函数 描述
all() 如果集合中的所有元素都是 True(或者集合为空),则返回 True。
any() 如果集合中的所有元素都是 True,则返回 True;如果集合为空,则返回 False。
enumerate() 返回一个枚举对象,其中包含了集合中所有元素的索引和值(配对)。
len() 返回集合的长度(元素个数)
max() 返回集合中的最大项
min() 返回集合中的最小项
sorted() 从集合中的元素返回新的排序列表(不排序集合本身)
sum() 返回集合的所有元素之和

python集合set相关操作的更多相关文章

  1. Python字符串的相关操作

    1.大小写转换 判断字符串 s.isalnum() #所有字符都是数字或者字母 s.isalpha() #所有字符都是字母 s.isdigit() #所有字符都是数字 s.islower() #所有字 ...

  2. Python集合类型的操作与应用

    Python集合类型的操作与应用 一.Python集合类型 Python中的集合类型是一个包含0个或多个数据项的无序的.不重复的数据组合,其中,元素类型只能是固定数据类型,如整数.浮点数.字符串.元组 ...

  3. redis对set(无序集合)的相关操作

    redis对set类型(无序集合)操作的相关命令以及如何在python使用这些命令 redis对set类型操作的命令: 命令 语法 概述 返回值 Redis Sadd 命令 sadd key memb ...

  4. Selenium2+python自动化40-cookie相关操作

    前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录. 登录后换账号登录时候,也可作为后置条件去删除cookie ...

  5. python文件的相关操作

    python 目录 python 1.python文件的介绍 使用文件的目的 Python文件的类型主要有两种:文本文件和二进制文件. 操作文件的流程主要有三步:打开-操作-关闭操作. 2.文件的打开 ...

  6. 『无为则无心』Python序列 — 22、Python集合及其常用操作

    目录 1.Python集合特点 2.Python集合的创建 3.操作集合常用API (1)增加数据 @1.add()方法 @2.update()方法 (2)删除数据 @1.remove()方法 @2. ...

  7. Selenium2+python自动化40-cookie相关操作【转载】

    前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录. 登录后换账号登录时候,也可作为后置条件去删除cookie ...

  8. Python字典及相关操作(内含例题)

    Python字典类型 今天将会介绍一种在python中十分常见的组合数据类型——字典 通过一些实例来理解字典中的常规操作 什么是字典类型? 列表中查找是通过整数的索引(元素在列表中的序号)来实现查找功 ...

  9. Python集合的常用操作

    字典常用的就是,他的去重. set集合是python的一个基本数据类型. set中的元素是不重复的.⽆无序的.⾥面的元素必须是可hash的(int, str, tuple,bool). 我们可以这样来 ...

随机推荐

  1. Nhibernate 使用 (一)

    一:介绍 NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库.Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具.NHibernate ...

  2. Intellij Idea调试java文件时 怎么跳过class文件?

    Intellij Idea调试时 java文件时,遇到class文件时它也会反编译该文件,并跳入该class文件内一条条语句执行.这让我烦透了,怎么跳过class文件,继续调试啊? SETTINGS- ...

  3. Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag Freemarker VS .NetCore Tag TagHelper

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  4. 期货大赛项目|六,iCheck漂亮的复选框

    废话不多说,直接上图 对,还是上篇文章的图,这次我们不研究datatables,而是看这个复选框,比平常的复选框漂亮太多 看看我是如何实现的吧 插件叫iCheck 用法也简单 引入js和css $(& ...

  5. labview出现系统998错误

    1.环境:xp,labview2015, 2.经过:初始状态正常,系统需要运行2016的打包的程序,运行不了,后下载了一个2016打包后的程序,点击安装,未提示异常.桌面添加了快捷方式,点击快捷方式, ...

  6. vue中mint-ui的filed的与blur事件结合实现检查用户输入是否正确

    标题mint-ui的filed与blur事件验证用户输入格式是否正确说明:本人前端菜鸟,只是想借个地方做个笔记,为了以后查阅时比较方便.如有大神有什么建议的地方,欢迎提出来. 1.不得不说,mint- ...

  7. Nginx模块 ngx_http_limit_req_module 限制请求速率

    The ngx_http_limit_req_module module (0.7.21) is used to limit the request processing rate per a def ...

  8. OpenStack共享组件

    一.云计算的前世今生 1.物理机架构,应用部署和运行在物理机上  2.虚拟化架构,物理机上运行若干虚拟机,应用系统直接部署到虚拟机上  3.云计算架构,虚拟化提高了单台物理机的资源使用率 二.Open ...

  9. Windows的四类消息

    Windows的三类消息1.标准消息宏名称 对映消息 消息处理函数(名称已由系统预设)ON_WM_CHAR WM_CAHR OnCharON_WM_CLOSE WM_CLOSE OnCloseON_W ...

  10. MyBatis入门(二)接口式编程

    在  MyBatis入门(一) 的基础之上编写接口 将接口和Mapper文件进行绑定,会为接口创建一个代理对象,代理对象去执行增删改查 (1)编写接口 public interface EmpDao ...