小学生都能学会的python(深浅拷贝)
小学生都能学会的python(深浅拷贝)
join() 把列表中的每一项用字符串拼接起来
# lst = ["汪峰", "吴君如", "李嘉欣", "陈慧琳", "关之琳"]
# # 遍历列表. 把列表中的每一项用"_" 做拼接
# s = "_".join(lst) # 把列表转化成字符串
# print(s)
#
#
# s1 = "汪峰_吴君如_李嘉欣_陈慧琳_关之琳"
# ls = s1.split("_") # 把字符串转化成列表
# print(ls) # print("*".join("马化腾"))
split() 相反
1. 关于删除(重点)
1. 循环迭代过程中不能删除。
2. 创建新列表。 把要删除的内容保存在新列表中。 循环新列表, 删除老列表
3. 字典在循环的时候可以修改, 但不能新增和删除
# lst = ["渣渣辉", "古天绿", "陈小春", "彭佳慧", "郑中基", "胡辣汤"]
# # lst.clear()
# # for el in lst: # for 内部有一个变量来记录当前被循环的位置, 索引.
# # lst.remove(el) # 直接删除. 是删不干净的. 原因是每次删除都设计到元素的移动. 索引在变.
#
# # 先把要删除的内容保存在一个新列表中. 循环这个新列表. 删除老列表
# new_lst = []
# for el in lst:
# new_lst.append(el)
# for el in new_lst:
# lst.remove(el)
# print(lst) # lst = ["张无忌", "张三丰", "张翠山", "张嘉译", '刘嘉玲', "刘能", '刘老根']
# # 删除姓张的人
# new_lst = []
# for el in lst:
# if el.startswith("张"):
# new_lst.append(el)
#
# for el in new_lst:
# lst.remove(el)
# print(lst) # dic = {"谢逊": '金毛狮王', "韦一笑":"青翼蝠王","殷天正":"白眉鹰王","金花婆婆":"紫衫龙王"}
# for k in dic:
# dic['谢逊'] = "张无忌他爹"
# print(dic)
dict.fromkeys(k, v)
把key迭代。和value组合成k:v创建新字典, 所有的key共享同一个value
# d = {}
# # fromkeys正常来说应该是类名来访问的.
# dd = d.fromkeys(["胡辣汤","are you 确定?"], "周芷若") # fromkeys是一个类方法.作用是创建新字典
# print(d) # 原字典没有改变
# print(dd) # 新的字典是通过第一个参数的迭代. 和第二个参数组合成key:value创建新字典 # d = dict.fromkeys(["哇哈哈", "爽歪歪"], []) # 所有的key用的都是同一个列表,改变其中一个。 另一个也跟着改变
# d["哇哈哈"].append("张无忌")
# print(d)
#
# print(id(d['哇哈哈']), id(d["爽歪歪"]))
2. set集合(粗略)
特点: 无序, 去重, 哈希
lst = []
list(set(lst)) # 去重复
# dic = {"a":"哇哈哈", "a":"爽歪歪"}
# print(dic) # key 不会重复
# dic[[1,2,3]] = "哇哈哈" # 必须是可哈希的 # s = set() # 空集合
# s = {1,2,3,6,3,4,6,4, [4,5,6]} # 不重复, 必须是可哈希的
# print(s) # set其实就是不存value的字典. 只存key
# 去重复
# lst = [1,2,3,4,4,4,4,5,5,6,7,7,7]
# s = set(lst)
# lst = list(s)
# print(lst) s = {"赵本山", "范伟", "小沈阳", "高秀敏", "宋小宝"}
# s.add("赵铁柱")
# s.add("李小花")
# s.add("王尼玛")
# s.add("张全蛋")
# print(s)
#
# s.update(("刘伟", '张伟', "张三丰")) # 迭代更新 # item = s.pop()
s.remove("小沈阳")
print(s)
# print(item) # for el in s:
# print(el)
3. 深浅拷贝(难点)
1. 赋值。 不会产生新对象。 和拷贝没关系
2. 浅拷贝。 只会复制自身。 会创建对象
2. 深拷贝。 把内部所有的内容都进行拷贝。
# lst1 = ["太白","日天","哪吒","银王","金王"]
# lst2 = lst1
# lst1.append("女神")
# print(id(lst1))
# print(id(lst2)) # lst1 = ["太白","日天","哪吒","银王","金王"]
# # lst2 = lst1[:] # 创建了新列表
# lst2 = lst1.copy() # 会创建新对象, 创建对象的速度会很快.
# lst1.append("女神")
# print(lst1)
# print(lst2) # lst1 = ["太白","日天",["盖浇饭", "锅包肉", "吱吱冒油的猪蹄子"],"哪吒","银王","金王"]
# lst2 = lst1.copy() # 会创建新对象, 创建对象的速度会很快.
# # lst1[2].append("油泼扯面")
# print(id(lst1[2]), id(lst2[2])) # 导入拷贝模块
# import copy
# lst1 = ["太白","日天",["盖浇饭", "锅包肉", "吱吱冒油的猪蹄子"],"哪吒","银王","金王"]
# lst2 = copy.deepcopy(lst1)
# print(id(lst1[2]), id(lst2[2])) # 赋值没有创建新对象。多个变量共享同一个对象
# 浅拷贝。 会创建新对象。 新的对象中里面的内容不会被拷贝
# 深拷贝。 创建一个一摸一样的完全新的对象。 这个对象延伸出来的内容也会跟着复制一份 a = [1, 2]
a[1] = a
print(a[1])
小学生都能学会的python(深浅拷贝)的更多相关文章
- 小学生都能学会的python(小数据池)
小学生都能学会的python(小数据池) 1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 ...
- 小学生都能学会的python(闭包和迭代器)
小学生都能学会的python(闭包和迭代器) 1. 函数名第一类对象 函数名其实就是变量名 1). 可以像变量一样互相赋值. 2). 可以作为函数的参数,进行传递 3). 可以作为返回值返回 4). ...
- 小学生都能学会的python(函数的进阶)
小学生都能学会的python(函数的进阶) 1. 动态传参 形参: 1. 位置参数 2. 默认值参数 3. 动态传参 *args 动态接收位置参数 **kwargs 动态接收关键字参数 def fun ...
- 小学生都能学会的python(函数)
小学生都能学会的python(函数) 神马是函数 函数: 对功能或者动作的封装 函数的定义 def 函数名(形参列表): 函数体(return) ret = 函数名(实参列表) 函数的返回值 retu ...
- 小学生都能学会的python(文件操作)
小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...
- 小学生都能学会的python(字典{ })
小学生都能学会的python(字典{ }) 1. 什么是字典 dict. 以{}表示. 每一项用逗号隔开, 内部元素用key:value的形式来保存数据 {"jj":"林 ...
- 小学生都能学会的python(列表[ ])
小学生都能学会的python(列表[ ]) 1. 什么是列表(list) 能装东西的东西 列表中装的数据是没有限制的, 大小基本上是够用的 列表使用[]来表示. 在列表中每个元素与元素之间用逗号隔开 ...
- 小学生都能学会的python(编码 and 字符串)
小学生都能学会的python(编码 and 字符串) 一,编码 最早的计算机编码是ASCII. 有英文+数字+特殊字符 8bit => 1byte 没有中文, 后面的编码必须兼容ASCII ...
- 小学生都能学会的python(运算符 和 while循环)
---恢复内容开始--- 小学生都能学会的python(运算符和编码) 一.格式化输出 #占位:"%s"占位,占得是字符串,"%d"占位,占的是数字. # 让用 ...
随机推荐
- Linux 内核管理
Linux内核基础:Linux Kernel: Linux内核的体积结构是单内核的,但充分借鉴了微内核设计体系的优点,为内核引入模块化机制,使得虽然是单内核,但工作在模块化的方式下,并且模块可以动态 ...
- 【Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) A】 Doggo Recoloring
[链接] 我是链接,点我呀:) [题意] 你可以把出现次数大于1的颜色换成其他颜色. 问你最后能不能全都变成同一种颜色 [题解] 判断一下有没有出现次数大于1的就好. 有的话.显然可以一直用它变颜色. ...
- C和C++ const的声明差异
当在C源代码文件中将变量声明为const时,可以通过以下方式实现: const int i = 2; 然后,可以在另一个模块中使用此变量,如下表示: extern const int i; 但若要获取 ...
- 工具-Telerik trial安装图解
- 纯js编写验证信息提示正则匹配数字,字母,空值
1.显示效果 2,html结构 <div class="border_bg"> <div id="upcCode" style="p ...
- cogs 1164. 跑步
1164. 跑步 ★ 输入文件:runa.in 输出文件:runa.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 路人甲准备跑N (5≤N≤500)圈来锻炼自 ...
- [SharePoint][SharePoint Designer 入门经典]Chapter10 Web部件链接
本章概要: 1.Web部件作用 2.如何添加和配置 3.如何个性化 4.如何导出,并在其他站点重利用 5.通过组合web part创建复杂的用户界面
- six.moves的用法
six是用来兼容python 2 和 3的,我猜名字就是用的2和3的最小公倍数. six.moves 是用来处理那些在2 和 3里面函数的位置有变化的,直接用six.moves就可以屏蔽掉这些变化 P ...
- SwipeRefreshLayout与ViewPager滑动事件冲突解决
问题描写叙述: 开发中发现,SwipeRefreshLayout的下拉刷新,与ViewPager开发的banner的左右滑动事件有一点冲突,导致banner的左右滑动不够顺畅. 非常easy在bann ...
- 因一段JavaScript代码引发的闲扯
前两天,一朋友给我发了一段JavaScript代码: function f1(){ var n=999; nAdd=function(){ n+=1 }; function f2(){ alert(n ...