一. set集合

空集合 a = set()

set集合内的元素必须可哈希(不可变), int, str, bool, tuple

set3 = {'1','alex',2,True,(1,2,[2,3,4])}                                     这会报错

set可去重, 用set(lst)去重. lst  = list(set(lst))

set内元素是无序的.

set集合有增删改查的操作

可以用frozenset()冻结集合, 使集合可哈希, 不可变.

s = {1,2,3}

s.add(元素)

s.update(元素)

item.s.pop(元素)

s.remove(元素)

s.clear(元素)

先删除后添加

for i in s:

print(i)

其他操作:

s1 = {1,2,3}

s2 = {3,4,5}

交集

print(s1 & s2)

print(s1.intersection(s2))                                {3}

并集

print(s1 | s2)

print(s1.union(s2))                                          {1,2,3,4,5}

差集

print(s1 - s2)

print(s1.difference(s2))                                   {1,2}

反交集

print(s1 ^ s2)

print(s1.symmetric_difference(s2))               {1,2,4,5}

子集

print(s1 < s2)   False

超集

print(s1 > s2)   False

frozenset

s = frozenset(["赵本⼭山", "刘能", "⽪皮⻓长⼭山", "⻓长跪"])

dic = {s:'123'}

print(dic)                                                              不添加frozenset会显示unhashedable type

dic = {frozenset({1,2,3}):1}

print(dic)                                                              不会报错

a = frozenset({1,1,1,1,1})

print(a)                                                                frozenset({1})

print(type(a))                                                       class 'frozenset'>

二. 深浅拷贝

a = [5,6,7,8]

lst1 = [1,2,3,4,a]

赋值

lst2 = lst1               没有创建新列表, 共用了一个列表

浅拷贝

lst2 = lst1[:]

lst2 = lst1.copy()      创建了一个新列表, 但是lst1的最后一个变量名为a的列表只复制了一个内存指向

深拷贝

import copy

lst2 = copy.deepcopy(lst1)                  创建了一个新列表, 复制了lst1的所有元素, 并将lst1中内存指向的元素也重新复制了一份

浅拷贝和深拷贝的区别:

浅拷贝时, 只是将列表中的元素拷贝到了第二个列表中, 第一个列表中的列表元素只是拷贝了指向这个列表的内存指向, 所以如果这个内存指向的列表发生变化时, 第一个列表和拷贝的第二个列表的这个元素都会发生变化.

深拷贝时, 会把这个列表中内存指向的列表也一起拷贝过来, 所以当改变内存指向的元素a时, lst1会改变, 而lst2不会改变. 深拷贝会复制所有层的内存指向的元素.

三, 其他

1.

lis = ['1','2','3']

a = "_".join(lis)

print(a)

lis的元素只能是字符串, 或者用join(字符串)等可迭代的类型

2.

列表和字典在循环的时候不能删除其中的元素.

列表的for循环中, 删除了其中一个元素, 后面的元素会往前面移一个索引, 下一个for i in lst: 时, 会跳到被弹出的元素的后面第二个元素.

字典的for循环中, 字典进行修改时, 会报错, 字典在循环时, 不能改变字典的大小.

可以用一个新建的列表或字典, 在循环中, 改变另一个新的字典或列表.

3.

b = [1,2]

a = dict.fromkeys("we", b)

b.append(3)

print(a)

输出{'w': [1, 2, 3], 'e': [1, 2, 3]}, a中值对应的b理解为对列表b的一个指向. 在print前面进行append时, 会改变b的元素. 所以输出时有b的添加上去的元素.

转载于:https://www.cnblogs.com/NachoLau/p/9415493.html

set集合, 深浅拷贝, join, 列表和字典在循环中删除元素的问题, fromkeys( , )相关推荐

  1. python删除列表第几个元素_python中对列表list遍历的过程中删除元素4种方法

    代码存储库,记录在删除列表中指定元素代码 背景:li=[1,2,3,2,1,3,4,6,73,5,1,3,1,2,4] 列表中的所有等于1,2,3的值 解决方法: 第一种使用逆序遍历num_list ...

  2. Day7--Python--基础数据类型补充,集合,深浅拷贝

    一.基础数据类型补充 1.join() 把列表中的每一项(必须是字符串)用字符串拼接 与split()相反 lst = ["汪峰", "吴君如", " ...

  3. join,列表和字典用for循环的删除,集合,深浅拷贝

    1.join() 将列表转换成字符串,并且每个字符之间用另一个字符连接起来,join后面必须是可迭代的对象(字符串,列表,元组,字典,集合),数字不能迭代 例如: 1 s = ['a','b','c' ...

  4. day02 格式化输出 运算符 编码 字符串 列表 元组 字典 set集合 深浅拷贝

    day02学习大纲 一. 格式化输出: %s 占位字符串 %d 占位数字 "xxx%sx %sxx" % (变量, 变量) 二. 运算符: a+=b a = a + b and 并 ...

  5. str中的join方法,fromkeys(),set集合,深浅拷贝(重点)

    一丶对之前的知识点进行补充 1.str中的join方法.把列表转换成字符串 # 将列表转换成字符串,每个元素之间用_拼接 s = "_".join(["天",& ...

  6. 基础数据类型补充 set集合 深浅拷贝

    一.基础数据类型补充 1. "拼接字符串".join(可迭代对象) 可迭代对象为列表时,输出列表元素与拼接字符串的拼接 li = ['张三', '李四', '王五', '赵四'] ...

  7. Java循环中删除一个列表元素

    本文主要想讲述一下我对之前看到一篇文章的说法.假设跟你的想法有出入,欢迎留言.一起讨论. #3. 在循环中删除一个列表元素 考虑以下的代码.迭代过程中删除元素: ArrayList<String ...

  8. python列表的添加操作_python3_列表(修改,添加和删除元素操作)

    前言:列表的定义:列表是由一系列按特定顺序排列的元素组成.即列表是一个有序集合. 1.修改列表元素 由前言知列表是一个有序集合,因此在修改列表元素时我们需指定列表名和要修改的元素的索引,再指定该元素的 ...

  9. 怎么删除python工程_python根据字典的键来删除元素的方法

    python根据字典的键来删除元素的方法: 可以利用pop()方法来进行删除. pop()方法可以删除字典定键key及对应的值,并返回被删除的值. 具体使用方法如:[site.pop('name')] ...

最新文章

  1. 双击jar运行main主函数实现-fatJAR
  2. 深度学习中几种常见的激活函数理解与总结
  3. Crawler:关于爬虫的简介、安装、使用方法之详细攻略
  4. SwipeRefreshLayout里面需要注意的Api
  5. SpringCloud系列七:使用Ribbon实现客户端侧负载均衡
  6. Could not install packages due to an EnvironmentError: [Errno 13] Permission denied解决办法
  7. ubuntu14.04无法打开新加卷
  8. C++ vector理解
  9. Repast仿真学习
  10. 浅谈SQL注入的四种防御方法
  11. visio一分二的箭头_visio软件双箭头连接线怎么画?
  12. 飞机航线的获取、配准、制作与统计距离
  13. 2021年小目标检测最新研究综述
  14. Android自定义LayoutManager第十一式之飞龙在天
  15. Linux sdkman使用方法
  16. SQLServer常用的字符串函数
  17. java 批量图片下载
  18. 三星s10升级android11,外媒:三星S10已开始推送基于Android 11的UI 3.0更新
  19. 高性能MySQL(3th)(第一章 MySQL概述) —— 04 InnoDB和MyISAM
  20. android之ion内存储器管理器,Android ION

热门文章

  1. 12种Dropout方法:应用于DNNs,CNNs,RNNs中的数学和可视化解释
  2. Waymo无人卡车高调重返凤凰城,但货运先机已失
  3. 一种新的计算机视觉技术?将手机的摄像头变成了一个搜索引擎
  4. 德鲁克的黄金管理20条—------中高层管理必修课
  5. 一般来说,神经网络的架构可以分为哪三类?
  6. Understanding Stock Types in SAP EWM
  7. 国产光刻机正式宣布:今年出货150台
  8. Facebook最新研究:配合AR眼镜使用的腕带,可将神经信号转化为动作
  9. 新基建下的自动驾驶:单车智能和车路协同之争
  10. EUV光刻机全球出货量达57台