python基础-集合小结
集合
简介
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素.
sets 支持 x in set, len(set), 和 for x in set。
集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.
作为一个无序的集合,sets 不记录元素位置或者插入点。因此,sets 不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。
set为可变集合
frozenset为固定集合
可变集合特有的方法: add, remove, discard, pop, clear, 这些接受对象的方法, 参数必须是可哈希的
声明
用集合的工厂方法 set()和 frozenset():
set
>>> s = set('cheeseshop')
>>> s
set(['c', 'e', 'h', 'o', 'p', 's'])
frozenset
>>> b = frozenset([1,2,3,2])
>>> b
frozenset([1, 2, 3])
>>> b.add(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'add'
Set 和 ImmutableSet
字符串->字符集
>>> set('hello')
set(['h', 'e', 'l', 'o'])
列表/元组->集合
>>> set([1,2,3,2,1])
set([1, 2, 3])
>>> set((1,2,3,2,1))
set([1, 2, 3])
甚至是 字典->集合
>>> a = {'name':'tom','age':22,'score':22}
>>> set(a)
set(['age', 'score', 'name'])
常用操作
成员关系
>>> h = set('hello')
>>> h
set(['h', 'e', 'l', 'o'])
>>> 'l' in h
True
>>> 'l' not in h
False
新增删除
新增单个元素 s.add(x)
向 set “s”中增加元素 x
>>> a = set([1,2,3,4,2])
>>> a
set([1, 2, 3, 4])
>>> a.add(2)
>>> a
set([1, 2, 3, 4])
>>> a.add(5)
>>> a
set([1, 2, 3, 4, 5])
新增多个元素
s.update(t)
s |= t
>>> a = set([1,2,3])
>>> b = set([2,3,4])
>>> a.update(b)
>>> a
set([1, 2, 3, 4])
>>> b
set([2, 3, 4])
删除
s.remove(x)
从 set “s”中删除元素 x, 如果不存在则引发 KeyError
>>> a
set([1, 2, 3, 4, 5])
>>> a.remove(4)
>>> a
set([1, 2, 3, 5])
>>> a.remove(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 4
s.discard(x)
如果在 set “s”中存在元素 x, 则删除
>>> a
set([1, 2, 3, 5])
>>> a.discard(3)
>>> a
set([1, 2, 5])
>>> a.discard(3)
>>> a
set([1, 2, 5])
s.pop()
删除并且返回 set “s”中的一个不确定的元素, 如果为空则引发 KeyError
>>> a
set([1, 5])
>>> a.pop()
1
>>> a.pop()
5
>>> a.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'pop from an empty set'
s.clear()
删除 set “s”中的所有元素
>>> a
set([1, 2, 3, 4])
>>> a.clear()
>>> a
set([]) >>> b = set([1,2,3])
>>> del b
集合间操作
注意,集合操作可以通过函数进行,也存在等价的运算符
1.交集
s.union(t) 等价 s | t
返回一个新的 set 包含 s 和 t 中的每一个元素
2.并集
s.intersection(t) 等价 s & t
返回一个新的 set 包含 s 和 t 中的公共元素
3.差集
s.difference(t) 等价 s - t
返回一个新的 set 包含 s 中有但是 t 中没有的元素
4.差分集
s.symmetric_difference(t) 等价 s ^ t
返回一个新的 set 包含 s 和 t 中不重复的元素
>>> a = set([1,2,3])
>>> b = set([2,3,4])
>>> a.symmetric_difference(b)
set([1, 4])
5.关系判断
s.issubset(t) 等价 s <= t
测试是否 s 中的每一个元素都在 t 中
s.issuperset(t) 等价 s >= t
测试是否 t 中的每一个元素都在 s 中
6.浅拷贝
>>> a
set([1, 2, 3])
>>> b = a.copy()
>>> b
set([1, 2, 3])
其他
1.用的较少的函数
s.intersection_update(t) 等价 s &= t
返回只保留含有 set “t”中元素的 set “s”
s.difference_update(t) 等价 s -= t
返回删除了 set “t”中含有的元素后的 set “s”
s.symmetric_difference_update(t) 等价 s ^= t
返回含有 set “t”或者 set “s”中有而不是两者都有的元素的 set “s”
补充
集合推导(2013-08-13)
>>> { x for x in range(10) }
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
http://wklken.me/posts/2013/03/10/python-base-set.html#_5
python基础-集合小结的更多相关文章
- Python基础知识点小结
1.Python基础知识 在Python中的两种注释方法,分别是#注释和引号(''' ''')注释,#注释类似于C语言中的//注释,引号注释类似于C语言中的/* */注释.接着在Python中 ...
- python基础知识小结-运维笔记
接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...
- python学习笔记-(七)python基础--集合、文件操作&函数
本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...
- Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数
1. 集合 1.1 特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...
- python基础 ------ 集合
---恢复内容开始--- ----- 集合 使用场景:网购的订单.与商品ID 一一对应的商品信息 python的内置类型:List Tuple Dictionary ---- 列表 LI ...
- Python学习【day04】- Python基础(集合、函数)
集合 #!/usr/bin/env python # -*- coding:utf8 -*- # set集合 只可放不可变的数据类型,本身是可变数据类型,无序 # s = {1,2,3,[1,2,3] ...
- python基础---集合类型(Sets)
集合类型(Sets) 集合对象是不同的(不可重复)hashable对象的无序集合.常见用法包括:成员关系测试.移除序列中的重复.以及科学计算,例如交集.并集.差分和对称差分.通俗点来说,集合是一个无序 ...
- python基础学习小结
Python是一门面向对象的解释性语言(脚本语言),这一类语言的特点就是不用编译,程序在运行的过程中,由对应的解释器向CPU进行翻译,个人理解就是一边编译一边执行.而JAVA这一类语言是需要预先编译的 ...
- 1.Python基础知识小结:
Python3下载地址:https://www.python.org/downloads/windows/ python3 windows安装参考地址: https://jingyan.baidu.c ...
随机推荐
- windows phone 8.0 的网络图片异步加载方案
买了一本林政的8.1UI的书,看到一个使用弱引用对像来解决图片缓存的问题,刚好自已写的应用也遇到这个问题,于是小改动了一下代码,搬到了8.0版本来使用,代码由 zhxilin℃+ 大神提供了部分解决代 ...
- Spring,FetchType.LAZY和FetchType.EAGER什么区别?
1.FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载. 2.FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载. ...
- VC-基础-WebBrowser控件中弹出新网页窗口
用webbrowser控件浏览网页时,常弹出新的网页窗口,若不做任何控制的话,会在默认浏览器(一般是IE)中打开,这样就在新的窗口打开了,原程序就很难控制了,且存在webbrowser控件和IE的se ...
- js中随机数获取
// 结果为0-1间的一个随机数(包括0,不包括1) var randomNum1 = Math.random(); //console.log(randomNum1); // 函数结果为入参的整数部 ...
- 题解P3951【小凯的疑惑】
相信参加OI的oiers都是数学高手吧 我好像不是 (滑稽 那应该大家都接触过邮资问题吧! 所谓邮资问题,就类似于这一题,给定a和b两种邮资数,求最大的不能凑出的邮资 数.这里给出公式:最大的不能集出 ...
- ScriptMaker
0x00 前言 pwn脚本千篇一律,之前也是保存了一份模板,每次都用它,但还是觉得每次都复制一次各种名字还是有的累,于是就写了一份脚本生成器 0x01 ScriptMaker #!/usr/bin/e ...
- C# 常用函数和方法集汇总
1.DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=System.D ...
- Linux 命令大全提供 500 多个 Linux 命令搜索
Linux Command 在这里维持一个持续更新的地方 516 个 Linux 命令大全,内容包含 Linux 命令手册.详解.学习,值得收藏的 Linux 命令速查手册.请原谅我写了个爬虫,爬了他 ...
- ElasticSearch High Level REST API【5】使用模板搜索
ElasticSearch Rest高级API 提供了多种搜索方式,除了前面讲到的search查询,ElasticSearch 还提供了通过模板搜索查询.我个人比较喜欢这种方式. 我们可以通过脚本预选 ...
- DeepFaceLab报错,CUDA driver is insufficient 解决方法!
DeepFaceLab出错,虽然错误提示很长很长,但是无非两种情况,一种是驱动没装好,一种是显存配置不够. CUDA driver version is insufficient for CUDA r ...