博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day python calss08 深浅copy
阅读量:5165 次
发布时间:2019-06-13

本文共 3528 字,大约阅读时间需要 11 分钟。

一  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

你可能感兴趣的文章
【转】java中的集合和数组
查看>>
UGUI 学习
查看>>
[代码记录] C语言链表
查看>>
UVa 12716 GCD XOR
查看>>
mybatis获得刚刚插入的自增的值
查看>>
读《不要等到毕业以后》后感
查看>>
Eureka常见问题
查看>>
自反acl
查看>>
从前端优化反观浏览器渲染原理
查看>>
基于Asterisk的VoIP开发指南——(2)Asterisk AGI程序编写指南
查看>>
ASP.NET MVC HtmlHelper用法大全
查看>>
在IIS中部署Asp.Net网站
查看>>
UITabBarController使用详解
查看>>
LeetCode - ZigZag Conversion
查看>>
windows服务安装卸载
查看>>
C# Dictionary<TKey,TValue>如何添加键重复的内容
查看>>
第五篇:web之前端之float的几种清除浮动方式
查看>>
三剑客之grep
查看>>
Workerman-文件监控-牛刀小试
查看>>
Shiro 自定义登陆、授权、拦截器
查看>>