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中的集合相关推荐

  1. python字典是什么的集合_Python中的字典和集合

    文章目录字典1.介绍 2.创建字典 3.字典内元素的访问 4.字典元素的添加.修改.删除 5.关于字典的其它操作 6.字典存储底层原理 集合1.介绍 2.相关操作 3.集合元素的添加 4.移除元素 字 ...

  2. python创建一个空集合_Python中如何创建集合

    #创作者招募令# 第六十七节:创建集合 集合作为序列形式的一种,在Python中也有应用. 先来看看集合在数学中的定义:集合(aggregate)是"确定的一堆东西",集合里的&q ...

  3. python中的字典和集合_Python 字典和集合

    字典的每个键值对用冒号分割,键值对之间用逗号分隔,所有键值对包括在{}中. d = {key1 : value1, key2 : value2 } 键必须是唯一的,值可以不唯一.值可以取任何数据类型, ...

  4. python map用法_Python中ChainMap的一种实用用法

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 简而言之ChainMap:将多个字典视为一个,解锁Python超能力. Python标准库中的集合模块包含 ...

  5. python nums函数_Python中的内置函数

    Python中有很多内置函数,不需要我们调用模块可以直接使用,而且都是常用函数的封装,下面我们来看看Python中的内置函数都有那些. 1.abs() abs()是绝对值函数,把一个负数转化为正数,数 ...

  6. python语言数据类型_Python中的数据类型 | 萧小寒

    摘要 Python3中提供有六个标准的数据类型:Number(数字).String(字符串).List(列表).Tuple(元组).Sets(集合).Dictionary(字典). 在这些数据类型中, ...

  7. python map用法_Python中 map()函数的用法详解

    python map()函数问题 使用map()函数生成一个值D但是检测D的长度时,只能测一次,一次之后D似不知道你的dataSet 是什么数据,是否是从数据库取出来的结果游标, 如果是的 那么dat ...

  8. python逗号代码_python中的逗号

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! mycursor = mydb.cursor() sql = select * ...

  9. python列表相关函数_python中列表(list)相关的函数

    1.列表相关的内置函数 all(iterable):这个函数返回一个布尔值.如果iterable的所有元素都为真(或iterable自身为空)则返回True,否则返回False. 例:all[2,3, ...

最新文章

  1. Eclipse中新建jsp提示The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path
  2. Linux(一)——基础入门(1)
  3. python3精要(25)-lambda
  4. 如何免费试用SAP的Fiori应用
  5. pythonwhile输出每一个余数_Python 基础 - day02-3
  6. 看到一个暴强的翻译,闲的蛋疼,写个c#版的
  7. oracle anonhugepage,案例:Oracle linux redhat检查Transparent HugePages状态并关闭
  8. Python机器学习:PCA与梯度上升03求数据的主成分PCA
  9. Hadoop: The Definitive Guide (3rd Edition)
  10. 善用AI技术,旷视发布《人工智能应用准则》
  11. JasperReport+iReport进行java报表开发
  12. 通过思科构造局域网_从Cisco DNA中心的管理的和设置的非结构Catalyst 9800无线局域网控制器...
  13. a标签创建超链接,利用a标签创建锚点
  14. 一键解决局域网共享(批处理)
  15. C语言 牛顿法 解方程,如何用科学计算器求方程的解(牛顿法解方程具体步骤)...
  16. k3 cloud api java_调用K3Cloud webapi
  17. [项目管理] 如何评估工作量
  18. JDK安装 Java环境配置
  19. c语言修改pdf文件内容,PDF如何编辑,PDF文件怎么修改文字
  20. 一招教你解决Win10屏幕模糊问题

热门文章

  1. 破解无线网络密码教程
  2. 发现一个好问题胜过一切!如何提高发现问题的能力
  3. 我在世界末日如何回忆平行宇宙中不平凡的2021
  4. 高完整性系统工程(一): Safety Engineering, HAZOP Fault Tree Analysis
  5. 一分钟让你学会如何合并PDF文件
  6. 《西虹市首富》文章相关代码分享
  7. redis相关的详细介绍,包括三主三从集群的搭建
  8. 用animation实现钟表动画
  9. ArcGIS统计每个行政区(村)内各种土地利用类型的总面积
  10. 你必须知道的495个C语言问题电子书pdf下载