python--深浅拷贝 join() 列表和字典的删除 fromkeys建立字典
北京的冬天雾霾依旧很重,依稀记得人生初见雾霾时的样子,那时的回忆也是有些尴尬,不过雾霾也伴随了我的成长,成为了我肺泡中不可分割的一部分.
今天我想写的是拷贝的问题,不过在这之前我想先补充一点关于字符串的东西
1.字符串的拼接
lst = ["", "", "", ""]
使用前面的字符串. 对后面的列表进行拼接,拼接的结果是一个字符串
s = "_".join(lst)
print(s)
最后的结果是 1_2_3_4
这个join()就是用迭代的方法对数据进行拼接 for i in lst:
print(i,end = " ")
这样输出的结果就成了 1 2 3 4 就不用换行了 因为end 默认为\n
2.列表,字典的删除
删除列表的方法(简单方法):
li = ["a", "b", "c", "d"]
for i in li[:]:
li.remove(i)
print(li) # 列表切片会产生一个新对象,这样就可以删除列表了
例:
dic = {"张无忌":"乾坤大挪移", "周芷若":"哭", "赵敏":"卖萌"}
for k in dic:
dic.pop(k) # dictionary changed size during iteration
dic["灭绝师太"] = "倚天屠龙剑" # dictionary changed size during iteration 这样的方法是绝对删除不干净的 ,绝对不要用这种方式删除
列表字典不能迭代删除的例子
要想删除列表, 字典这样的类型.应该把要删除的元素放在另一个列表当中,通过迭代新列表,来删除旧列表中的内容
把要删除的key保存在一个新列表中
# 循环这个类表.删除字典中的key:value
lst = []
for k in dic:
lst.append(k) # 循环列表
# 删除字典中的内容
for el in lst:
dic.pop(el)
print(dic)
3.深浅拷贝
- 浅拷贝只拷贝第一层的内容,第二层的内容不会拷贝
- 深度拷贝会拷贝所有内容 ,把元素的全部内容进行拷贝不会产生一个改变,另外一个也跟着改变的问题
深拷贝: copy.deepcopy()
# 引入一个模块
import copy lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
lst2 = copy.deepcopy(lst1) # 深拷贝: 对象内部的所有内容都要复制一份. 深度克隆(clone). 原型模式 print(id(lst1))
print(id(lst2)) print(lst1)
print(lst2) lst1[4].append("葫芦娃")
print(lst1)
print(lst2)
浅拷贝: .copy()
从上到下只有一个列表被创建
lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅"]
lst2 = lst1
# 并没有产生新对象. 只是一个指向(内存地址)的赋值
print(id(lst1))
print(id(lst2))
lst1.append("葫芦娃")
print(lst1)
print(lst2) lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅"]
lst2 = lst1.copy() # 拷贝, 抄作业, 可以帮我们创建新的对象,和原来长的一模一样, 浅拷贝
print(id(lst1))
print(id(lst2))
lst1.append("葫芦娃")
print(lst1)
print(lst2) lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
lst2 = lst1.copy() # 浅拷贝. 只拷贝第一层内容
print(id(lst1))
print(id(lst2))
print(lst1)
print(lst2)
lst1[4].append("葫芦娃")
print(lst1)
print(lst2)
现在我们发现
直接lst1 = lst2时
他们实际上指的是同一个对象, 就是说都指向这个列表的地址, 所以当一个改变的时候
另一个也会改变
4. .fromkeys()用来创建一个字典
坑1: 返回新字典. 和原来的字典没有关系
dic = {}
d = dic.fromkeys("风扇哥", "很困")
print(dic) # {}
print(d) 坑2: 如果value是可变的数据类型,那么其中一个key对应的value执行的更改操作. 其他的也跟着变
d = dict.fromkeys("胡辣汤", [])
print(d) # {'胡': [], '辣': [], '汤': []}
print(id(d['胡']))
print(id(d['辣']))
print(id(d['汤'])) d['胡'].append("河南特色")
print(d) # {'胡': ['河南特色'], '辣': ['河南特色'], '汤': ['河南特色']}
dic = {}
d = dic.fromkeys(["胡辣汤"])
print(d) # {'胡辣汤': None}
python--深浅拷贝 join() 列表和字典的删除 fromkeys建立字典的更多相关文章
- 小学生都能学会的python(深浅拷贝)
小学生都能学会的python(深浅拷贝) join() 把列表中的每一项用字符串拼接起来 # lst = ["汪峰", "吴君如", "李嘉欣&quo ...
- Python开发【第二章】:Python深浅拷贝剖析
Python深浅拷贝剖析 Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 一.对象赋值 ...
- 底层剖析Python深浅拷贝
底层剖析Python深浅拷贝 拷贝的用途 拷贝就是copy,目的在于复制出一份一模一样的数据.使用相同的算法对于产生的数据有多种截然不同的用途时就可以使用copy技术,将copy出的各种副本去做各种不 ...
- 【0806 | Day 9】三张图带你了解数据类型分类和Python深浅拷贝
一.数据类型分类 二.Python深浅拷贝
- 第二天----列表、深浅拷贝、元组、字符串、算数运算、字典、while
列表 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 基本操作: 索引切片追加删除长度切片循环包含 创建.查看列表: 列表中的数字不要加引号,列表的索引从0开始: lis ...
- python 深浅拷贝 元组 字典 集合操作
深浅拷贝 :值拷贝 :ls = [,,] res = ls 则print(res)就是[,,] 浅拷贝 :ls.copy() 深拷贝:ls3 = deepcopy(ls) # 新开辟列表空间,ls列表 ...
- python 深浅拷贝 for循环删除
###########################总结########################### 1. 基础数据类型补充 大多数的基本数据类型的知识.已经学完了 a='aaaa' ls ...
- python深浅拷贝与赋值
初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...
- python---基础知识回顾(一)(引用计数,深浅拷贝,列表推导式,lambda表达式,命名空间,函数参数逆收集,内置函数,hasattr...)
一:列表和元组(引用计数了解,深浅拷贝了解) 序列:序列是一种数据结构,对其中的元素按顺序进行了编号(从0开始).典型的序列包括了列表,字符串,和元组 列表是可变的(可以进行修改),而元组和字符串是不 ...
随机推荐
- Direcshow相关资料
CCapture directshow 视频捕获类: http://blog.csdn.net/xgx198831/article/details/7284618 ICaptureGraphBuild ...
- centos7 ping www.baidu.com ping 不通。
centos7 ping www.baidu.com ping 不通. 记录下,在搭建NodeJS服务器遇到的坑:centos7 ping www.baidu.com ping 不通. 1. 配置网卡 ...
- 创建maven版的java工程
步骤如下: 1.第一步 2.第二步: 3.第三步:
- SVN代理设置
[SVN代理设置] ~/.subversion/servers文件下可以配置svn的代理. 打开上面那3行,替换为自定义的域名即可.
- Tomcat 用startup.bat启动,卡住解决
相比较用eclipse发布项目,直接在tomcat的bin目录下用startup.bat启动需要多做一些工作,而且直接运行startup.bat不会报错,不利于解决问题 所以最好的选择是在安装部署时 ...
- js小例子之二级联动
联动原理 当用户点击省级的下拉选项,选择所在省,下一个下拉选项里的选项,则变成用户选择省下的所有市的信息,不会出现其它省市的信息. 省市数据 把省市数据,保存在js文件中,以json形式保存,以便读取 ...
- 22.Generate Parentheses (String; Back-Track)
Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...
- adf 日志输出
1,选中ViewController或是Model,在属性框中,做如下配置,run/debug后可以看到日志信息中,将adf的整个执行过程很详细的打印出来了. 在每个项目的Project proper ...
- git忽略某个文件夹
data/cache/* !data/cache/index.html !data/cache/smiOAuthToken.php
- 关于anroid设置webview背景方法探讨(转)
最近的项目中一直关于webView设置背景色问题在研究,最终找到了解决的方法. 基于我项目的需求,从服务端传过来的是带有标签的文本,如果使用textView会让整个布局显得很乱,里面的<img ...