一  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 = [,,,,,,,,,,,,]
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[].append("油泼扯面")
print(id(lst1[]), id(lst2[]))#id 一样只能copy第一层

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

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

day python calss08 深浅copy的更多相关文章

  1. Python的深浅copy详解

    Python的深浅copy详解 目录 Python的深浅copy详解 一.浅copy的原理 1.1 浅copy的定义 1.2 浅copy的方法 二.深copy的原理 2.1 深copy的定义 2.2 ...

  2. Python的深浅copy

    27.简述Python的深浅拷贝以及应用场景? 深浅拷贝的原理 深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:copy.deepcopy 字面理 ...

  3. Python 集合 深浅copy

    一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...

  4. python集合深浅copy

    一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...

  5. Python之深浅copy与字符编码

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

  6. python之深浅copy

    深浅copy 1.赋值运算 a = [1, 2, 3] b = a a.append(666) print(b) #output:[1, 2, 3, 666] 对于赋值运算来说,a与b指向的是同一个内 ...

  7. 【python】-- 深浅copy、集合

    深浅copy 1.数字.字符串的copy: 赋值(=).浅拷贝(copy)和深拷贝(deepcopy)其实都一样,因为它们永远指向同一个内存地址: >>> import copy & ...

  8. python基础--深浅copy(重点)

    在此申明一下,博客参照了https://www.cnblogs.com/jin-xin/,自己做了部分的改动 深浅copy(重点) 先问问大家,什么是拷贝?拷贝是音译的词,其实他是从copy这个英文单 ...

  9. python 的深浅copy

    1.引用: A=B, 修改B后,A会被修改 2.浅拷贝:A=copy.copy(B) 3.深拷贝:A=copy.deepcopy(B) 如果希望任何改变,两个对象都不会相互影响,用深拷贝.详情参考:h ...

随机推荐

  1. MINIUI应用

    MINIUI是一款优秀的JS前端web框架,提供丰富.强大控件库,能快速开发企业级Web应用软件. 属于付费插件. 如果有兴趣推荐去这个网址看看.MiniUI 在线示例  http://www.min ...

  2. CentOS下安装mysql5.7和mysql8.x

    5.7和8.15版本亲测.centos版本为:CentOS-7-x86_64-Minimal-1810. 1.下载mysql57-community-release-el7-9.noarch.rpm. ...

  3. linux网络连接--桥接bridge,NAT,host-only的区别

    linux网络连接主要分为三种:桥接,net,host_only 桥接使用的是真实网卡,电脑里面有两种真实网卡,有线网卡,无线网卡,当你使用的是无线连接, 则选择无线网卡,使用网线连接,则选择有线网卡 ...

  4. 【转载】offer经验

    http://www.cnblogs.com/figure9/archive/2013/01/09/2853649.html

  5. windows 网络操作

    ver 命令 显示当前机器上的操作系统版本信息 ipconfig/release 释放IP地址 ipconfig/renew 重新获取IP地址 cmd下使用ssh 如果想在cmd中输入 ssh xx@ ...

  6. java的小程序在html中的运行测试

    java的小程序在html中的运行测试,打开vs2012,以网站模式打开,生成,调用iis临时服务器运行.

  7. .net core 之Hangfire任务调度

    Hangfire可用作任务调度,类似延迟任务.队列任务.批量任务和定时任务等. 一.nuget Hangfire包 找到Hangfire.AspNetCore和Hangfire.SqlServer包, ...

  8. 3.3 C++改变基类成员在派生类中的访问属性

    参考:http://www.weixueyuan.net/view/6360.html 总结: 使用using声明可以改变基类成员在派生类中的访问属性. private: using book::se ...

  9. SQL--数据--基本操作

    数据操作 新增数据 有两种方案方案1:给全表字段插入数据,不需要指定字段列表:要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致:凡是非数值数据,都需要使用引号(建议是单引号)包裹 insert ...

  10. Android SurfaceView内容获取

    Android SurfaceView内容获取 这几天在做一个Android的小项目,项目中需要使用到SurfaceView来显示相机捕获的内容,同时还有一个SurfaceView用于绘制一些辅助线, ...