Python基础7_基础数据类型补充,fromkeys(),深浅拷贝

一. 基础数据类型补充
1.join() 和 split()
s = "".join(lst) 用""将列表连接成字符串
lst = s.split("") 用""将字符串切割成列表
2.循环删除列表的每一个元素
由于删除元素会导致元素的索引改变,所以容易出现问题,尽量不要在循环中去删除元素,可以把要删除的元素添加到另一个列表中,然后再批量删除
(1).把要删除的元素暂时先保存到一个list中
(2).然后循环list,在删除旧列表
3.字典的删除
字典在循环的时候是不能被删除的
(1).把要删除的key放在一个新列表中
(2).循环新列表,删除旧字典
4.集合和字典
集合和字典是一家人
字典:key必须是不可变的,可哈希的,不重复的
集合:元素必须是不可变的,可哈希的,不重复的
二. fromkeys()创建字典
fromkeys("元素1", "元素2")
把第一个参数进行迭代,拿到每一项作为key和后面的value组合成字典
坑1:返回新字典,和原来的字典没有关系
dic = {}
d = dic.fromkeys("风扇哥", "胡辣汤")
print(dic) #{}
print(d) #{'风': '胡辣汤', '扇': '胡辣汤', '哥': '胡辣汤'}
fromkeys("元素1", ["元素2", "元素3"])
把第一个参数进行迭代,拿到每一项作为key和后面列表组合成字典
坑2:如果其中的一个key对其value进行更改操作,其他的也跟着改变
d = dict.fromkeys("风扇哥", ["胡辣汤", "烩面"])
print(d) #{'风': ['胡辣汤'], '扇': ['胡辣汤'], '哥': ['胡辣汤']}
d["风"].append("烧饼")
print(d)
#{'风': ['胡辣汤', '烧饼'], '扇': ['胡辣汤', '烧饼'], '哥': ['胡辣汤', '烧饼']}
三. 深浅拷贝
提高创建对象的速度,计算机中最慢的就是创建对象,需要分配内存,最快的方式就是二进制流的形式进行复制,速度最快
1.=没有创建新对象,只是内存地址进行复制
lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅"]
lst2 = lst1
lst1.append("葫芦娃")
print(lst1) #['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', '葫芦娃']
print(lst2) #['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', '葫芦娃']
2.浅拷贝:只拷贝第一层,第二层的内容不会拷贝.如果第一层元素中含有列表,则只会拷贝这个列表的内存地址
copy()
(1).列表中只有字符串,
lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅"]
lst2 = lst1.copy()
lst1.append("葫芦娃")
print(lst1) #['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', '葫芦娃']
print(lst2) #['胡辣汤', '灌汤包', '油泼面', '麻辣香锅']
(2).列表中还有列表
lst1 = ["胡辣汤", "灌汤包", ["长白山", "白洋淀"]]
lst2 = lst1.copy()
lst1[2].append("葫芦娃")
print(lst1) #['胡辣汤', '灌汤包', ['长白山', '白洋淀', '葫芦娃']]
print(lst2) #['胡辣汤', '灌汤包', ['长白山', '白洋淀', '葫芦娃']]
3.深拷贝:会把对象内部的所有内容进行拷贝
import copy
copy.deepcopy()
import copy
lst1 = ["胡辣汤", "灌汤包", ["长白山", "白洋淀"]]
lst2 = copy.deepcopy(lst1)
lst1[2].append("葫芦娃")
print(lst1) #['胡辣汤', '灌汤包', ['长白山', '白洋淀', '葫芦娃']]
print(lst2) #['胡辣汤', '灌汤包', ['长白山', '白洋淀']]

posted @ 2018-12-04 17:32  lokichoggio  阅读(159)  评论(0编辑  收藏  举报