python中集合_Python中的集合
1.dict中的fromkeys(a, b)函数:
把a迭代后的每一个元素作为一个key,value都是相同的b
dic = dict.fromkeys(["a", "b"], ["1", "2"])
print(dic) #结果:{'a': ['1', '2'], 'b': ['1', '2']}
dic = dict.fromkeys("abcd", ["1", "2"])
print(dic) #结果:{'a': ['1', '2'], 'b': ['1', '2'], 'c': ['1', '2'], 'd': ['1', '2']}
这时如果改变b,那么每一个value都将会改变:
dic.get("a").append("888")
print(dic) #结果是{'a': ['1', '2', '888'], 'b': ['1', '2', '888']}
2.集合(set)
一般不是很常用. set中的元素是不重复的.无序的.里面的元素必须是可hash的(int, str, tuple,bool), 我们可以这样来记. set就是dict类型的数据但是不保存value, 只保存key. set也用{}表示
set集合中的元素必须是可hash的, 但是set本身是不可hash得. set是可变的.
2.1增删改查
增加:
add(a)函数,a必须是set中没有的
a.update(b):迭代更新,把b迭代,然后加入集合a中
例:
s = {"刘嘉玲", '关之琳', "王祖贤"}
s.update("麻花藤") # 迭代更新
print(s) #{'王祖贤', '花', '刘嘉玲', '麻', '关之琳', '藤'}
删除:
pop():随机删除
remove(a):直接删除a,如果集合中不存在a,则会报错
clear():清空
修改:
因为没有索引,无法定位,只能用先删除,后增加的方法进行修改
查询:
集合是一个可迭代对象,可以用for循环遍历
常用操作:
s1 = {"a", "b", "c"}
s2 = {"c", "d", "e"}
# 交集
# 两个集合中的共有元素
print(s1 & s2) # {'c'}
print(s1.intersection(s2)) # {'c'}
# 并集
print(s1 | s2) # {'e', 'd', 'b', 'a', 'c'}
print(s1.union(s2)) # {'e', 'd', 'b', 'a', 'c'}
# 差集
print(s1 - s2) # {'a', 'b'}
print(s1.difference(s2)) # {'a', 'b'}
# 反交集
print(s1 ^ s2) # 两个集合中单独存在的数据 {'e', 'a', 'd', 'b'}
print(s1.symmetric_difference(s2)) # 两个集合中单独存在的数据 {'e', 'a', 'd', 'b'}
s1 = {"a", "b"}
s2 = {"a", "b", "c"}
# 子集
print(s1 < s2) # set1是set2的⼦子集吗? True
print(s1.issubset(s2))
# 超集
print(s1 > s2) # set1是set2的超集吗? False
print(s1.issuperset(s2))
3.深浅拷贝
3.1 引用赋值
直接赋值. 其实是把内存地址交给变量. 并不是复制一份内容. 所以.lst1的内存指向和lst2是一样的. lst1改变了, lst2也发生了改变
1 lst1 = ["a", "b", "c", "d"]2 lst2 =lst13
4 print(lst1) #['a', 'b', 'c', 'd']
5 print(lst2) #['a', 'b', 'c', 'd']
6 lst1.append("e")7 print(lst1) #['a', 'b', 'c', 'd', 'e']
8 print(lst2) #['a', 'b', 'c', 'd', 'e']
3.2 浅拷贝
创建一个与已有的列表内容相同的另一个列表,有两种方法,一种是使用列表自带的copy()方法,另一种是使用切片.
#1
lst1 = ["何炅", "杜海涛","周渝民"]
lst2=lst1.copy()#列表自带的方法
lst1.append("李嘉诚")print(lst1)print(lst2)print(id(lst1), id(lst2))
结果:
两个lst完全不一样. 内存地址和内容也不一样. 发现实现了内存的拷贝
#2
lst1= ["何炅", "杜海涛","周渝民", ["麻花藤", "马芸", "周笔畅"]]
lst2=lst1[:]#使用切片来复制
lst1[3].append("无敌是多磨寂寞")print(lst1)print(lst2)print(id(lst1[3]), id(lst2[3]))
结果:
['何炅', '杜海涛', '周渝民', ['麻花藤', '马芸', '周笔畅', '无敌是多磨寂寞']]
['何炅', '杜海涛', '周渝民', ['麻花藤', '马芸', '周笔畅', '无敌是多磨寂寞']]4417248328 4417248328
从第二部分可以看出,浅拷贝. 只会拷贝第一层. 第二层的内容不会拷贝. 所以被称为浅拷贝
3.3深拷贝
importcopy
lst1= ["何炅", "杜海涛","周渝民", ["麻花藤", "马芸", "周笔畅"]]
lst2=copy.deepcopy(lst1)
lst1[3].append("无敌是多磨寂寞")print(lst1)print(lst2)print(id(lst1[3]), id(lst2[3]))
结果:
['何炅', '杜海涛', '周渝民', ['麻花藤', '马芸', '周笔畅', '无敌是多磨寂寞']]
['何炅', '杜海涛', '周渝民', ['麻花藤', '马芸', '周笔畅']]4447221448 4447233800
View Code
深度拷贝. 把元素内部的元素完全进行拷贝复制. 不会产生一个改变另一个跟着改变的问题
python中集合_Python中的集合相关推荐
- python字典是什么的集合_Python中的字典和集合
文章目录字典1.介绍 2.创建字典 3.字典内元素的访问 4.字典元素的添加.修改.删除 5.关于字典的其它操作 6.字典存储底层原理 集合1.介绍 2.相关操作 3.集合元素的添加 4.移除元素 字 ...
- python创建一个空集合_Python中如何创建集合
#创作者招募令# 第六十七节:创建集合 集合作为序列形式的一种,在Python中也有应用. 先来看看集合在数学中的定义:集合(aggregate)是"确定的一堆东西",集合里的&q ...
- python中的字典和集合_Python 字典和集合
字典的每个键值对用冒号分割,键值对之间用逗号分隔,所有键值对包括在{}中. d = {key1 : value1, key2 : value2 } 键必须是唯一的,值可以不唯一.值可以取任何数据类型, ...
- python map用法_Python中ChainMap的一种实用用法
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 简而言之ChainMap:将多个字典视为一个,解锁Python超能力. Python标准库中的集合模块包含 ...
- python nums函数_Python中的内置函数
Python中有很多内置函数,不需要我们调用模块可以直接使用,而且都是常用函数的封装,下面我们来看看Python中的内置函数都有那些. 1.abs() abs()是绝对值函数,把一个负数转化为正数,数 ...
- python语言数据类型_Python中的数据类型 | 萧小寒
摘要 Python3中提供有六个标准的数据类型:Number(数字).String(字符串).List(列表).Tuple(元组).Sets(集合).Dictionary(字典). 在这些数据类型中, ...
- python map用法_Python中 map()函数的用法详解
python map()函数问题 使用map()函数生成一个值D但是检测D的长度时,只能测一次,一次之后D似不知道你的dataSet 是什么数据,是否是从数据库取出来的结果游标, 如果是的 那么dat ...
- python逗号代码_python中的逗号
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! mycursor = mydb.cursor() sql = select * ...
- python列表相关函数_python中列表(list)相关的函数
1.列表相关的内置函数 all(iterable):这个函数返回一个布尔值.如果iterable的所有元素都为真(或iterable自身为空)则返回True,否则返回False. 例:all[2,3, ...
最新文章
- Eclipse中新建jsp提示The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path
- Linux(一)——基础入门(1)
- python3精要(25)-lambda
- 如何免费试用SAP的Fiori应用
- pythonwhile输出每一个余数_Python 基础 - day02-3
- 看到一个暴强的翻译,闲的蛋疼,写个c#版的
- oracle anonhugepage,案例:Oracle linux redhat检查Transparent HugePages状态并关闭
- Python机器学习:PCA与梯度上升03求数据的主成分PCA
- Hadoop: The Definitive Guide (3rd Edition)
- 善用AI技术,旷视发布《人工智能应用准则》
- JasperReport+iReport进行java报表开发
- 通过思科构造局域网_从Cisco DNA中心的管理的和设置的非结构Catalyst 9800无线局域网控制器...
- a标签创建超链接,利用a标签创建锚点
- 一键解决局域网共享(批处理)
- C语言 牛顿法 解方程,如何用科学计算器求方程的解(牛顿法解方程具体步骤)...
- k3 cloud api java_调用K3Cloud webapi
- [项目管理] 如何评估工作量
- JDK安装 Java环境配置
- c语言修改pdf文件内容,PDF如何编辑,PDF文件怎么修改文字
- 一招教你解决Win10屏幕模糊问题