一  join (格式:   . join)

遍历列表把列表中的每一项用指定符号进行拼接.(把列表转成字符串0

# lst = ["汪峰", "吴君如", "李嘉欣", "陈慧琳", "关之琳"]
# # 遍历列表. 把列表中的每一项用"_" 做拼接
# s = "_".join(lst) # 把列表转化成字符串
# print(s) 输出结果为 汪峰_吴君如_李嘉欣_陈慧琳_关之琳
print("*".join("马化腾")) #结果为 马*化*腾
 

split切割 :把字符串切割为列表
s1 = "汪峰_吴君如_李嘉欣_陈慧琳_关之琳"
ls = s1.split("_") # 把字符串转化成列表
print(ls)

二 关于删除

lst= ["渣渣辉", "古天绿", "陈小春", "彭佳慧", "郑中基", "胡辣汤"]
# # lst.clear()
# # for el in lst: # for 内部有一个变量来记录当前被循环的位置, 索引.
# #     lst.remove(el)  (删不干净)    # 直接删除. 是删不干净的. 原因是每次删除都设计到元素的移动. 索引在变.

1 这么删除

#先把要删除的内容保存在一个新列表中. 循环这个新列表. 删除老列表
# lst=["渣渣会","古天乐","陈小春"]
# lst1=[]
# for a in lst:
#     lst1.append(a)
# for b in lst1:
#     lst.remove(b)
# 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) 结果为:{'谢逊': '张无忌他爹', '韦一笑': '青翼蝠王', '殷天正': '白眉鹰王', '金花婆婆': '紫衫龙王'}

元组 => 列列表 list(tuple)列表 => 元组 tuple(list)list=>str str.join(list)str=>list str.split()转换成False的数据:0,'',None,[],(),{},set() ==> False

三  fromkey

d = {}
# fromkeys正常来说应该是类名来访问的.
dd = d.fromkeys(["胡辣汤","are you 确定?"], "周芷若") # fromkeys是一个类方法.作用是创建新字典
print(d) # 原字典没有改变
print(dd) # 新的字典是通过第一个参数的迭代. 和第二个参数组合成key:value创建新字典

结果为 {'胡辣汤': '周芷若', 'are you 确定?': '周芷若'}

d = dict.fromkeys(["哇哈哈", "爽歪歪"], []) # 所有的key用的都是同一个列表,改变其中一个。 另一个也跟着改变
d["哇哈哈"].append("张无忌")
print(d)print(id(d['哇哈哈']), id(d["爽歪歪"]))

结果为:{'哇哈哈': ['张无忌'], '爽歪歪': ['张无忌']}2843620157064 2843620157064

  解释:  dict.fromkeys(k, v)        把key迭代。和value组合成k:v创建新字典, 所有的key共享同一个value

四 set 集合

特点: 无序, 去重, 哈希
        lst = []
        list(set(lst)) # 去重复

et其实就是不存value的字典. 只存key
# 去重复
lst = [1,2,3,4,4,4,4,5,5,6,7,7,7]
s = set(lst)
lst = list(s)
print(lst)  结果 [1, 2, 3, 4, 5, 6, 7]

set (增)

s = {"赵本山", "范伟", "小沈阳", "高秀敏", "宋小宝"}
s.add("赵铁柱")
s.add("李小花")
s.add("王尼玛")
s.add("张全蛋")
print(s)  结果 {'张全蛋', '赵铁柱', '李小花', '高秀敏', '范伟', '赵本山', '王尼玛', '小沈阳', '宋小宝'}

s.update(("刘伟", '张伟', "张三丰")) # 迭代更新 无序的添加

s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟玉", "李李若彤"}
item = s.pop() # 随机弹出⼀一个.
print(s)
print(item) # 随机选择一个
s.remove("关之琳") # 直接删除元素
# s.remove("⻢马⻁虎疼") # 不不存在这个元素. 删除会报错
print(s)
s.clear() # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和
dict区分的.
print(s)

set集合中的数据没有索引. 也没有办法去定位⼀一个元素. 所以没有办法进⾏行行直接修改.
# 我们可以采⽤用先删除后添加的⽅方式来完成修改操做

s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟玉", "李李若彤"}
# 把刘嘉玲改成赵本⼭山
s.remove("刘嘉玲")
s.add("赵本山")
print(s)

set是⼀一个可迭代对象. 所以可以进⾏行行for循环   (赋值没有创建新对象。多个变量共享同一个对象)

for el in s:
print(el)

五  深浅拷贝

   1. 赋值。 不会产生新对象。 和拷贝没关系

 lst1 = ["太白","日天","哪吒","银王","金王"]
# lst2 = lst1
# lst1.append("女神")
# print(id(lst1)) 结果 ['太白', '日天', '哪吒', '银王', '金王', '女神'] # print(id(lst2))  ['太白', '日天', '哪吒', '银王', '金王', '女神']

2. 浅拷贝。 只会复制自身。 会创建对象

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]))#id 一样只能copy第一层 

3. 深拷贝。 把内部所有的内容都进行拷贝。(深拷贝。 创建一个一摸一样的完全新的对象。 这个对象延伸出来的内容也会跟着复制一份)    # import copy

import copy
st1 = ["太白","日天",["盖浇饭", "锅包肉", "吱吱冒油的猪蹄子"],"哪吒","银王","金王"]# lst2 = copy.deepcopy(lst1)# print(id(lst1[2]), id(lst2[2]))

转载于:https://www.cnblogs.com/systemsystem/p/9628977.html

day python calss08 深浅copy相关推荐

  1. python之深浅copy

    python之深浅copy 文章目录 python之深浅copy 引入 1.为什么要使用深浅拷贝 一.赋值运算 1.赋值运算原理 2.示例 3.总结 二.拷贝 三.浅拷贝 什么是浅拷贝? 1.浅拷贝原 ...

  2. Python基础三--字典,集合,编码,深浅copy,元祖、文件操作

    字典 dict数据类型划分:可变数据类型,不可变数据类型不可变数据类型: 元组,bool值,int,str 可哈希可变数据类型: list,dict,set 不可哈希 dict key :必须是不可变 ...

  3. python怎么设置颜色深浅变化_Python赋值、深浅copy

    Python赋值.深浅copy assignment: 在 Python 中,对象的赋值就是简单的对象引用,这点和 C++不同,如下所示 a = [1, 2, 'hello', ['python', ...

  4. python 的内存回收,及深浅Copy详解

    一.python中的变量及引用 1.1 python中的不可变类型: 数字(num).字符串(str).元组(tuple).布尔值(bool<True,False>) 接下来我们讲完后你就 ...

  5. Python 深浅copy 和文件操作

    深浅copy 1,先看赋值运算. l1 = [1,2,3,['barry','alex']] l2 = l1l1[0] = 111 print(l1) # [111, 2, 3, ['barry', ...

  6. [转载] python创建集合、计算a|b_python之路(集合,深浅copy,基础数据补充)

    参考链接: Python 集合set | symmetric_difference 一.集合:类似列表,元组的存储数据容器,不同点是不可修改,不可重复.无序排列. 1.创建集合: (1).set1 = ...

  7. 乐学python怎么样_铁乐学Python_day07_集合and浅谈深浅copy

    1.[List补充] 在循环一个列表时,最好不要使用元素和索引进行删除操作,一旦删除,索引会随之改变,容易出错. 如果想不出错,可以采用倒着删除的方法,因为倒着删除进行的话,只是后面元素的位置发生了变 ...

  8. python拷贝文件函数_python笔记2小数据池,深浅copy,文件操作及函数初级

    小数据池就是在内存中已经开辟了一些特定的数据,经一些变量名直接指向这个内存,多个变量间公用一个内存的数据. int: -5 ~ 256 范围之内 str: 满足一定得规则的字符串. 小数据池: 1,节 ...

  9. Python深浅copy

    在python里对对象进行拷贝有三个,即赋值,深拷贝,浅拷贝.而对象又分为两种,一种是不可变对象(字符串.元组.数字 ),一种是可变对象(列表.字典).而深浅拷贝有三种情况: 拷贝的是不可变对象,对于 ...

最新文章

  1. linux上使用strace查看C语言级别的php源码【一种方法】
  2. linux给普通用户分配root权限
  3. 续流二极管原理及应用
  4. Cannot resolve method addSource
  5. html基础-html简介-第一个网页(1)
  6. 关于spring中util:/的配置
  7. 计算机控制炉温实验,计算机控制(炉温控制)实验报告-20210412070439.docx-原创力文档...
  8. 深度学习笔记(27) 经典卷积网络
  9. Java 实现线性运动界面_java 实现顺序结构线性列表
  10. [转载]Unity3D 访问Access数据库
  11. python之用yagmail模块发送邮件
  12. android sdk下载慢的解决方法
  13. 贝叶斯公式的理解——机器学习算法(一)
  14. 石油大学计算机课程,2018年石油高校计算机类课程MOOC共建研讨会在我校召开
  15. travis java,关于java:在成功构建之后使travis-ci压缩我的项目并将其推送到github
  16. DELL服务器bios文件编辑,BIOS维修网站www.biosrepair.com-DELL 1600SC服务器BIOS分离过程...
  17. 新刷的小米手机系统没有便签,刷系统清除数据怎么恢复
  18. KBEngine 房间示例创建脚本调用解读
  19. k8s查看集群信息及基本命令
  20. 在Mac根目录下创建文件

热门文章

  1. 数据分析真题日刷 | 网易2018校园招聘数据分析工程师笔试卷
  2. OSPF —— 多区域部署 + ABR + ASBR + 路由重分发
  3. 由火车退票制度改革想到的民生问题
  4. python判断语句和循环语句
  5. Ryu环境搭建(Ubuntu20)
  6. 名帖184 黄庭坚 行书《寄岳云帖》
  7. 《认知设计》-提升学习体验的艺术
  8. 男人一定要有自己的事业,才有地位,才有话语权
  9. 国人劝酒经典用语大全
  10. python 证件照换底、抠像 百度人体分析