定义:

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. centos没有可用软件包 libgtk2

    在编写一个C程序,使用基于文本的终端图形编程库(curses)或图形界面(QT/GTK),分窗口显示三个并发进程的运行,因为centos并未安装gtk,所以运行命令行安装gtksudo yum -y ...

  2. 【JavaScrpt】JS之数组去重

    var arr = [] var peoples = [ {id:1,name:'wang'}, {id:2,name:'zhang'}, {id:2,name:'zhang'}, ] for(let ...

  3. python 3 实现文件下载的方法总结

    新学的python,兴奋不已,于是网上各种资源各种爬,发现对于同样文件下载,各个下载方法的速度是不一样的(目前就知道两种方法下载#尴尬) 下面分别看下吧: 下载同样的图片,方法二的速度是方法一的二倍 ...

  4. mysql查询用,或#隔开的字段

    假如,user表有一字段 pids,pids字段是用#(实际用逗号合适)隔开的师傅id.现在查询师傅id:168的徒弟有哪些(徒弟.徒孙.徒孙的徒弟.徒孙的徒孙....) sql:  select * ...

  5. Hadoop错误之namenode宕机的数据恢复

    情景再现: 在修复hadoop集群某一个datanode无法启动的问题时,搜到有一个答案说要删除hdfs-site.xml中dfs.data.dir属性所配置的目录,再重新单独启动该datanode即 ...

  6. LeetCode第二题

    题目描述: You are given two non-empty linked lists representing two non-negative integers. The digits ar ...

  7. HTML入门5

    格式化文本,高阶处理,接下来了解,标记引文,描述列表,计算机代码和其他文本,上下标,联系信息等数据. 学习不太知名的HTML元素来标记高级语义特征. 描述列表,也叫自定义列表,第三种类型的列表,除了u ...

  8. 安装Percona版本的MySQL主从复制

    准备两台虚拟机,按顺序执行1.1节的公共部分 1.1 首先安装 cmake # yum –y install cmake     //也需要安装gcc-c++,openssl openssl-deve ...

  9. python全栈开发 * 线程队列 线程池 协程 * 180731

    一.线程队列 队列:1.Queue 先进先出 自带锁 数据安全 from queue import Queue from multiprocessing import Queue (IPC队列)2.L ...

  10. 关于python列表和元组的基本操作

    一.列表 列表是python中最常出现的一种数据存储形式,掌握列表的基本操作可以快速而有效的提高我们的代码书写效率.列表中存放的数据有如下基本操作:如增.删.改.查,掌握了这四个操作,就基本掌握了列表 ...