码迷,mamicode.com
首页 > 编程语言 > 详细

python--基础数据类型的补充与深浅copy

时间:2019-04-08 21:25:16      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:key   join()   python   rem   one   字典   pen   print   直接   

一 . join的用法

技术图片
lst =[‘吴彦祖‘,‘谢霆锋‘,‘刘德华‘]
s = ‘_‘.join(lst)
print(s) # 吴彦祖_谢霆锋_刘德华

# join()
"*".join("吴彦祖") # 吴*彦*祖 把传递进去的参数进行迭代. 获取到的每个元素和前面的*进行拼接. 得到的是字符串
split() 切割. 切割的结果是列表
技术图片

二 . 对正在循环的列表或者字典的删除方法

  列表和字典: 都不能在循环的时候直接删除
  把要删除的内容记录在新列表中然后循环这个新列表. 删除列表(字典)

技术图片
# 列表
lst = [‘篮球‘,‘足球‘,‘乒乓球‘,‘网球‘,‘电子竞技‘]
lst_new = []
for el in lst:
    if ‘球‘ in el:
        lst_new.append(el)
# 把要删除的添加到新的列表里
print(lst_new) # [‘篮球‘, ‘足球‘, ‘乒乓球‘, ‘网球‘]
for i in lst_new:
    lst.remove(i)  #  删除旧的列表
print(lst) # [‘电子竞技‘]  打印旧列表

# 字典
dic = {"张无忌":"乾坤大挪移", "周芷若":"哭", "赵敏":"卖萌"}
# 把要删除的key保存在一个新列表中
# 循环这个列表.删除字典中的key:value
lst = []
for k in dic:
    lst.append(k)
# 循环列表
# 删除字典中的内容
for el in lst:
    dic.pop(el)
print(dic)
技术图片

三 . 注意fromkeys()的用法

技术图片
# 坑: 大坑, 神坑
# fromkeys() 帮我们创建字典用的
# 把第一个参数进行迭代. 拿到每一项作为key和后面的value组合成字典
d = dict.fromkeys("张无忌", "赵敏") # 创建字典
print(d)  # {‘张‘: ‘赵敏‘, ‘无‘: ‘赵敏‘, ‘忌‘: ‘赵敏‘}

# 坑1: 返回新字典. 和原来的字典没有关系
dic = {}
d = dic.fromkeys("风扇哥", "很困")
print(dic) # {}
print(d)  # {‘风‘: ‘很困‘, ‘扇‘: ‘很困‘, ‘哥‘: ‘很困‘}

# 坑2: 如果value是可变的数据类型, # 那么其中一个key对应的value执行的更改操作. 其他的也跟着变 d = dict.fromkeys("胡辣汤", []) print(d) # {‘胡‘: [], ‘辣‘: [], ‘汤‘: []} d[‘胡‘].append("河南特色") print(d) # {‘胡‘: [‘河南特色‘], ‘辣‘: [‘河南特色‘], ‘汤‘: [‘河南特色‘]}
技术图片

四 . 深浅copy

技术图片
# = 
    没有创建新对象, 只是把内存地址进行了复制
# 浅拷贝 
    lst.copy() 只拷贝第一层.
# 深拷贝
    import copy
    copy.deepcopy() 会把对象内部的所有内容进行拷贝
技术图片

  浅copy

技术图片
lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
lst2 = lst1.copy() # 浅拷贝. 只拷贝第一层内容
print(lst1) # [‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, [‘长白山‘, ‘白洋淀‘, ‘黄鹤楼‘]]
print(lst2) # [‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, [‘长白山‘, ‘白洋淀‘, ‘黄鹤楼‘]]
lst1[4].append("葫芦娃")
print(lst1) # [‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, [‘长白山‘, ‘白洋淀‘, ‘黄鹤楼‘, ‘葫芦娃‘]]
print(lst2) # [‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, [‘长白山‘, ‘白洋淀‘, ‘黄鹤楼‘, ‘葫芦娃‘]]
技术图片

  深copy

技术图片
# 引入一个模块
import copy
lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
lst2 = copy.deepcopy(lst1) # 深拷贝: 对象内部的所有内容都要复制一份. 深度克隆(clone). 原型模式

print(lst1) # [‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, [‘长白山‘, ‘白洋淀‘, ‘黄鹤楼‘]]
print(lst2) # [‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, [‘长白山‘, ‘白洋淀‘, ‘黄鹤楼‘]]

lst1[4].append("葫芦娃")
print(lst1) # [‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, [‘长白山‘, ‘白洋淀‘, ‘黄鹤楼‘, ‘葫芦娃‘]]
print(lst2) # [‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, [‘长白山‘, ‘白洋淀‘, ‘黄鹤楼‘]]
技术图片

python--基础数据类型的补充与深浅copy

标签:key   join()   python   rem   one   字典   pen   print   直接   

原文地址:https://www.cnblogs.com/uiys/p/10673121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!