python集合set相关操作
定义:
1.不同元素组成
2.无序
3.集合中的元素必须是不可变类型
创建集合
1
|
s = { 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 = { 1 , 2 , 3 , 4 , 5 , 6 } >>> s.add( "s" ) >>> s { 1 , 2 , 3 , 4 , 5 , 6 , 's' } |
2.clear 清空集合
1
2
3
4
|
>>> s = { 1 , 2 , 3 , 4 , 5 , 6 } >>> s.clear() >>> s set () |
3.copy 返回集合的浅拷贝
1
2
3
4
|
>>> s = { 1 , 2 , 3 , 4 , 5 , 6 } >>> new_s = s.copy() >>> new_s { 1 , 2 , 3 , 4 , 5 , 6 } |
4.pop 删除并返回任意的集合元素(如果集合为空,会引发 KeyError)
1
2
3
4
5
|
>>> s = { 1 , 2 , 3 , 4 , 5 , 6 } >>> s.pop() # pop删除时是无序的随机删除 1 >>> s { 2 , 3 , 4 , 5 , 6 } |
5.remove 删除集合中的一个元素(如果元素不存在,会引发 KeyError)
1
2
3
4
|
>>> s = { 1 , 2 , 3 , 4 , 5 , 6 } >>> s.remove( 3 ) >>> s { 1 , 2 , 4 , 5 , 6 } |
6.discard 删除集合中的一个元素(如果元素不存在,则不执行任何操作)
1
2
3
4
|
>>> s = { 1 , 2 , 3 , 4 , 5 , 6 } >>> s.discard( "sb" ) >>> s { 1 , 2 , 3 , 4 , 5 , 6 } |
7.intersection 将两个集合的交集作为一个新集合返回
1
2
3
4
5
6
|
>>> s = { 1 , 2 , 3 , 4 , 5 , 6 } >>> s2 = { 3 , 4 , 5 , 6 , 7 , 8 } >>> s.intersection(s2) { 3 , 4 , 5 , 6 } >>> s&s2 # 可以达到相同的效果 { 3 , 4 , 5 , 6 } |
8.union 将集合的并集作为一个新集合返回
1
2
3
4
5
6
|
>>> s = { 1 , 2 , 3 , 4 , 5 , 6 } >>> s2 = { 3 , 4 , 5 , 6 , 7 , 8 } >>> print (s.union(s2)) { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 } >>> print (s|s2) # 用 | 可以达到相同效果 { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 } |
9.difference 将两个或多个集合的差集作为一个新集合返回
1
2
3
4
5
6
7
8
9
10
|
>>> s = { 1 , 2 , 3 , 4 , 5 , 6 } >>> s2 = { 3 , 4 , 5 , 6 , 7 , 8 } >>> print ( "差集:" ,s.difference(s2)) # 去除s和s2中相同元素,删除s2 保留s中剩余元素 差集: { 1 , 2 } >>> print ( "差集:" ,s2.difference(s)) # 去除s和s2中相同元素,删除s2 保留s2中剩余元素<br> 差集: { 8 , 7 } >>> print ( "差集:" ,s - s2) # 符号 - 可以达到相同结果 差集: { 1 , 2 } >>> print ( "差集:" ,s2 - s) # 符号 - 可以达到相同结果 差集: { 8 , 7 } |
10. symmetric_difference 将两个集合的对称差作为一个新集合返回(两个集合合并删除相同部分,其余保留)
1
2
3
4
|
>>> s = { 1 , 2 , 3 , 4 , 5 , 6 } >>> s2 = { 3 , 4 , 5 , 6 , 7 , 8 } >>> s.symmetric_difference(s2) { 1 , 2 , 7 , 8 } |
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 = { 1 , 2 } >>> s1 = { 3 , 4 } >>> s2 = { 2 , 3 } >>> 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 = { 1 , 2 , 3 } >>> s1 = { 1 , 2 , 3 , 4 } >>> s2 = { 2 , 3 } >>> s.issubset(s1) True # 因为 s1 集合 包含 s 集合 >>> s.issubset(s2) False # s2 集合 不包含 s 集合 |
15.issuperset() 如果这个集合包含另一个集合,返回 True
1
2
3
4
5
6
7
|
>>> s = { 1 , 2 , 3 } >>> s1 = { 1 , 2 , 3 , 4 } >>> s2 = { 2 , 3 } >>> 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 = { 1 , 2 , 3 } >>> s1 = { 1 , 2 , 3 , 4 } >>> s2 = { 2 , 3 } >>> s.difference_update(s2) >>> s { 1 } # s2中的2,3 s集合中也有2,3 所以保留1 >>> s1.difference_update(s2) >>> s1 { 1 , 4 } |
17.symmetric_difference_update() 用自己和另一个的对称差来更新这个集合
1
2
3
4
5
6
7
8
9
10
11
12
|
>>> s = { 1 , 2 , 3 } >>> s1 = { 1 , 2 , 3 , 4 } >>> s2 = { 2 , 3 } >>> s1.symmetric_difference_update(s) >>> s1 { 4 } >>> s1.symmetric_difference_update(s2) >>> s1 { 2 , 3 , 4 } >>> s.symmetric_difference_update(s2) >>> s { 1 } |
集合与内置函数
下述内置函数通常作用于集合,来执行不同的任务。
函数 | 描述 |
all() | 如果集合中的所有元素都是 True(或者集合为空),则返回 True。 |
any() | 如果集合中的所有元素都是 True,则返回 True;如果集合为空,则返回 False。 |
enumerate() | 返回一个枚举对象,其中包含了集合中所有元素的索引和值(配对)。 |
len() | 返回集合的长度(元素个数) |
max() | 返回集合中的最大项 |
min() | 返回集合中的最小项 |
sorted() | 从集合中的元素返回新的排序列表(不排序集合本身) |
sum() | 返回集合的所有元素之和 |
python集合set相关操作的更多相关文章
- Python字符串的相关操作
1.大小写转换 判断字符串 s.isalnum() #所有字符都是数字或者字母 s.isalpha() #所有字符都是字母 s.isdigit() #所有字符都是数字 s.islower() #所有字 ...
- Python集合类型的操作与应用
Python集合类型的操作与应用 一.Python集合类型 Python中的集合类型是一个包含0个或多个数据项的无序的.不重复的数据组合,其中,元素类型只能是固定数据类型,如整数.浮点数.字符串.元组 ...
- redis对set(无序集合)的相关操作
redis对set类型(无序集合)操作的相关命令以及如何在python使用这些命令 redis对set类型操作的命令: 命令 语法 概述 返回值 Redis Sadd 命令 sadd key memb ...
- Selenium2+python自动化40-cookie相关操作
前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录. 登录后换账号登录时候,也可作为后置条件去删除cookie ...
- python文件的相关操作
python 目录 python 1.python文件的介绍 使用文件的目的 Python文件的类型主要有两种:文本文件和二进制文件. 操作文件的流程主要有三步:打开-操作-关闭操作. 2.文件的打开 ...
- 『无为则无心』Python序列 — 22、Python集合及其常用操作
目录 1.Python集合特点 2.Python集合的创建 3.操作集合常用API (1)增加数据 @1.add()方法 @2.update()方法 (2)删除数据 @1.remove()方法 @2. ...
- Selenium2+python自动化40-cookie相关操作【转载】
前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录. 登录后换账号登录时候,也可作为后置条件去删除cookie ...
- Python字典及相关操作(内含例题)
Python字典类型 今天将会介绍一种在python中十分常见的组合数据类型——字典 通过一些实例来理解字典中的常规操作 什么是字典类型? 列表中查找是通过整数的索引(元素在列表中的序号)来实现查找功 ...
- Python集合的常用操作
字典常用的就是,他的去重. set集合是python的一个基本数据类型. set中的元素是不重复的.⽆无序的.⾥面的元素必须是可hash的(int, str, tuple,bool). 我们可以这样来 ...
随机推荐
- 学习笔记: 异常状态管理,托管堆垃圾回收,CLR寄宿
1. 2. string 在内存中是连续分配的,是一个数组, 数组的特点就是 查询块,增删慢,改动Array导致所有数组成员地址变动,成本高 而string又是在程序中经常变动的 ,所有 clr中对 ...
- C#学习-多态
由于可以继承基类的所有成员,子类就都有了相同的行为,但是有时子类的某些行为需要相互区别,子类需要覆写父类中的方法来实现子类特有的行为. 多态即相同类型的对象调用相同的方法却表现出不同行为的现象. 只有 ...
- C#批量裁剪图片
有一批图片是全屏拷贝下来的,只需要保留指定区域的图片,用代码实现如下: Bitmap srcBmp = new Bitmap(fi.FullName); Bitmap dstBmp = srcBmp. ...
- CodeForces 958F3 Lightsabers (hard) 启发式合并/分治 多项式 FFT
原文链接http://www.cnblogs.com/zhouzhendong/p/8835443.html 题目传送门 - CodeForces 958F3 题意 有$n$个球,球有$m$种颜色,分 ...
- Java 使用blob对H5视频播放进行加密《java视频加密》
1.创建一个H5 <video>标签 <video id="sound" type="video/mp4" controls="co ...
- Linux shell 脚本报错:/bin/bash^M: bad interpreter: No such file or directory
今天遇到一个很诡异的问题,一直运行很正常的shell脚本失败了,只是昨天增加了一个参数而已. 报错信息: /bin/bash^M: bad interpreter: No such file or d ...
- react + antd 实现打印功能(踩了不少坑)
最近在有网页打印需求,尝试了一下react的打印功能,遇到了不少的坑: 1.react本身有一些打印的组件,但都不好用,都是基于window.print(),但是window.print()如果直接打 ...
- [jzoj]3875.【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)
Link https://jzoj.net/senior/#main/show/3875 Problem 在遥远的S星系中一共有N个星球,编号为1…N.其中的一些星球决定组成联盟,以方便相互间的交流. ...
- Chrome_查看 webSocket 连接信息
1.以下代码实现一个webSocket连接,在文本输入框中输入内容,点击发送,通过服务器,返回相同的内容显示在下方. <!DOCTYPE html> <html lang=" ...
- React_基本原理_ajax
React 基本原理 初始化显示界面 创建虚拟DOM树 渲染到 原生 DOM 树 绘制界面显示 更新界面 setState() 更新状态机 重新创建虚拟 DOM 树 新/旧树比较差异 (执行一次 DO ...