zoukankan      html  css  js  c++  java
  • 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) #['胡辣汤', '灌汤包', ['长白山', '白洋淀']]

  • 相关阅读:
    Codeforces Round #439 (Div. 2) B. The Eternal Immortality
    Codeforces Round #439 (Div. 2) A. The Artful Expedient
    Codeforces Round #437 (Div. 2, based on MemSQL Start[c]UP 3.0
    ClassLoader
    UVA 10790 How Many Points of Intersection?
    HDU 4628 Pieces
    Java学习笔记——可视化Swing中JTable控件绑定SQL数据源的两种方法
    thrift之TTransport层的分帧传输类TFramedTransport
    VB6基本数据库应用(四):数据的提取,新增和修改
    android 开发中判断网络是否连接的代码
  • 原文地址:https://www.cnblogs.com/guyannanfei/p/10065487.html
Copyright © 2011-2022 走看看