python学习之数据类型(set)
3.9 集合(set)
3.9.1 介绍
集合是一个无序且不重复的元素集合。元素必须是可哈希的(int,str,tuple,bool)。可以把它看作是dic的key的集合。用{}表示。
注意: set集合中的元素必须是可hash的, 但是set本身是不可hash得,set是可变的。
set1 = {11,22,33,'hahah',[11,22,33]} #报错,含有列表
set2 = {11,22,{33:44}} #报错,含有字典
set3 = {11,22,(111,[222,333])} #报错,含有列表
注意到没有,元素的元素也必须是可哈希的。
set的特性,让它在除重的应用中使用方便。
一行代码给列表去重
lst = [11,22,33,'hah','a','hah',22,33,11]
lst = list(set(lst)) #把lst转换成集合再转换成列表
print(lst)
##输出
[33, 11, 'hah', 'a', 22]
3.9.2 集合的操作
1.增加
.add()
语法:set.add(元素)一次只能增加一个元素,添加前set先进行查询操作,如果元素已存在,add将不会把该元素添加到set中。
set = {'德玛西亚','皇子','赵信','女警'}
set.add('李菁')
set.add('易大师')
set.add('慎')
set.add('慎')
print(set)
#输出
{'德玛西亚', '李菁', '皇子', '慎', '女警', '赵信', '易大师'} #顺序是不定的,且重复的内容不会添加到set中
.update()
语法:set.update('abc') 迭代更新成'a' 'b' 'c'
set.update(['abc']) 迭代更新成'abc'
set = {'德玛西亚','皇子','赵信','女警'}
set.update('剑豪')
print(set) #输出{'豪', '皇子', '女警', '剑', '赵信', '德玛西亚'}
set.update(['剑豪'])
print(set) #输出{'皇子', '德玛西亚', '剑豪', '赵信', '女警'}
2.删除
.pop()随机弹出,返回弹出值,但是,不能指定删除某个元素
.remove('元素') 删除特定值,不会返回删除值
.clear() 清空
.discard(''元素'') 如果删除的是set中的元素,则删除,否则,什么也不做.
.del set 删除整个集合
3.索引与替换
因为set是无序的,不能使用索引进行操作,没有办法去定位⼀个元素,也就无法直接通过索引进行替换。
如果要进行替换操作,只能先删除要替换的元素然后添加新的元素。
4.查询
set 是一个可迭代对象,可以使用for循环输出元素。
set支持 x in set, len(set), for x in set
作为一个无序的集合,sets不记录元素的位置和插入点
5.常用操作
| 操作符 | 方法 | 描述 |
|---|---|---|
| & | .intersection() | 交集 |
| | | .union() | 并集 |
| - | .difference() | 差集,得到第一个set的内容 |
| ^ | .symmetric_difference() | 反交集,对称差集;输出两个集合中单独存在的数据 |
| < | .issubset(a < b) | 子集,判断a是不是b的子集 |
| > | .issuperset(a < b) | 超集,判断a是不是b的超集 |
se1 = {'德玛','皇子','赵信'}
se2 = {'德玛','剑豪','女警'}
print(se1 & se2) #交集,输出{'德玛'}
print(se1 | se2) #并集,输出{'剑豪', '德玛', '皇子', '赵信', '女警'
print(se1 - se2) #差集,输出{'皇子', '赵信'}
print(se1 ^ se2) #反交集,输出{'女警', '赵信', '皇子', '剑豪'}
se3 = {'德玛','皇子'}
print(se3 < se1) #子集,输出True
print(se2 > se3 ) #超集,输出False
6.frozenset()冻结集合
set集合本⾝是可以发生改变的,是不可hash的。我们可以使用frozenset来保存数据,frozenset是不可变的,也就是⼀个可哈希的数据类型,之后就可以把他转成dic的key来使用。
frozenset是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法。
se1 = {'德玛','皇子','赵信'}
print(type(se1)) #输出<class 'set'>
se1 = frozenset(se1)
print(type(se1)) #输出print(type(se1))
dic = {se1:'123'}
print(dic)
python学习之数据类型(set)的更多相关文章
- python学习6—数据类型之集合与字符串格式化
python学习6—数据类型之集合与字符串格式化 1. 使用id()可以查看一个变量的内存地址: name = 'alex' id(name) 2. 进制转换 十进制转换为二进制等: a = 10 # ...
- python学习3—数据类型之整型、字符串和布尔值
python学习3-数据类型之整型.字符串和布尔值 数据类型 python3支持的数据类型共有6种: 1 Number 2 String 3 List 4 Tuple 5 Set 6 Dictiona ...
- Python学习 之 数据类型(邹琪鲜 milo)
1.Python中的数据类型:数字.字符串.列表.元组.字典 2.数字类型包括整型.长整型.浮点型.复数型 type(number):获取number的数据类型 整型(int):范围:-2,147,4 ...
- Python学习之数据类型
整数 Python可以处理任意大小的整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如: ...
- python学习:数据类型
python有两种索引方式.一种从左至右,下标从0开始:一种从右至左,下标从-1开始. python有六种数据类型: 不可变数据(四个):Number(数字).String(字符串).Tuple(元组 ...
- python学习之数据类型(List)
3.5 列表 3.5.1 列表的介绍 列表是python的基础数据类型之⼀,其他编程语言也有类似的数据类型. 比如JS中的数组, java中的数组等等.它是以[ ]括起来, 每个元素⽤' , '隔 ...
- python学习Day7 数据类型的转换,字符编码演变历程
一.数据类型的转换 1.1.1.字符转列表:lst1 = str.split(默认空格,也可依据指定字符分界),若无分界字符,就没法拆分,这时可以直接放进list转成列表 ----> s1 = ...
- python学习笔记--数据类型
Life is short, You need Python! 霸气的口号! 今天我也开始学python了,毕竟不懂后端的前端不是好前端.之前有过‘世界上最好的语言’和JavaScript的学习经验. ...
- python学习2——数据类型
1. python是强类型 动态类型的语言,动态类型表明它可以在声明变量的时候,不必指定数据类型,强类型规定了它不能容忍隐式类型转换 2. python中的不可变类型有:int,string,tupl ...
- [python学习笔记] 数据类型与语法
数据类型 数值型 int 整形 没有long类型,可以代表任意大小的整数. type(1) -> int float 浮点数 也没有double类型 type(1.2) -> float ...
随机推荐
- sys.argv的意义及用法
sys.argv的意义 简单来说,sys.argv是一个参数列表,这个列表存放着从外界获取到的参数(可能有多个) 下面以一个例子来详细阐述sys.argv,本次演示在ubuntu环境下运行 新建一个t ...
- 什么是Web Service(Web服务)?
从表面上看,Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API.例如可以创建一个提供天气预报的Web Service,那么无论你用哪种编程语言开发的应用都可以通过 ...
- (转载)搜索引擎的Query自动纠错技术和架构详解
from http://www.52nlp.cn/%E8%BE%BE%E8%A7%82%E6%95%B0%E6%8D%AE%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E7 ...
- 【Winfrom-适配窗体】 WinForm窗体及其控件的自适应,控件随着窗体变化
在Winform中,窗体最大化之后,控件仍然保持原来的大小,就会显得不好看,那么有什么办法让控件跟着窗体变化吗? 在需要自适应的Form中代码如下:(AutoSizeFormClass.cs源码在下方 ...
- mvc api 关于 post 跟get 请求的一些想法[FromUri] 跟[FromBody] 同一个控制器如何实现共存
wep api 在设置接收请求参数的时候,会自动根据模型进行解析. [FromUrl] 跟[FromBody] 不可以同时使用. 要拆分开: [HttpGet] public object GetP ...
- python解析字体反爬
爬取一些网站的信息时,偶尔会碰到这样一种情况:网页浏览显示是正常的,用python爬取下来是乱码,F12用开发者模式查看网页源代码也是乱码.这种一般是网站设置了字体反爬 一.58同城 用谷歌浏览器打开 ...
- Codeforces 343D Water Tree & 树链剖分教程
原题链接 题目大意 给定一棵根为1,初始时所有节点值为0的树,进行以下三个操作: 将以某点为根的子树节点值都变为1 将某个节点及其祖先的值都变为0 *询问某个节点的值 解题思路 这是一道裸的树链剖分题 ...
- 使用keil生成bin文件
相关文件 下载http://pan.baidu.com/share/link?shareid=478269&uk=1107426113 使用kei自带的工具的话是 打开Options f ...
- ServletConfig接口
ServletConfig接口 Servlet容器初始化Servlet对象时会为Servlet创建一个ServletConfig对象,在ServletConfig对象中包含了Servlet的初始化参数 ...
- 「CF 961G」Partitions
题目链接 戳我 \(Solution\) 首先,这个直接推式子.自己推去 所以我们来想一想一些巧妙的方法 \(|S|\sum w_i\) 可以转化为:划分好集合后,每个点都对当前点有\(w_i\)的贡 ...