zoukankan      html  css  js  c++  java
  • python学习第七天

    1. 基础数据部分的补充
    1. join: 把列表中的数据进行拼接。 拼接成字符串
    2. 关于删除:
    列表和字典在循环的时候都不能删除。
    把要删除的内容保存在新列表中。 循环新列表。 删除老列表(字典)
    3. fromkeys
    dict.fromkeys(iter, value)
    把可迭代对象进行迭代。 和后面的value组合成键值对 返回新字典
    坑1: 返回新字典。不会改变原来的字典
    dic = {}
    dic.fromkeys(xxx, xxx)
    print(dic) # {}
    坑2:
    d = fromkeys(xxx.[])
    字典中的所有的value都是同一个列表

    2. set集合
    特点:无序不重复。 内部元素必须可哈希
    1. add() 添加

    3. 深浅拷贝(画图理解)
    1. = 赋值操作没有创建新的对象。 此时 两个变量指向的是同一个内存地址
    2. copy() [:] 浅拷贝。 拷贝第一层内容
    3. 深拷贝
    import copy
    copy.deepcopy() 深度拷贝。 把对象内部的所有内容都拷贝一份
    作用: 快速创建对象


    # 字符串转化成列表: split()
    # 列表转化成字符串:join()
    # x->y类型 y(x)
    # 表示False的数据类型: False, 0, "", [], tuple(), dict(), set(), None.

    列表删除的坑:
    lst = ["王大锤", "王有才", "张小白", "刘大哥"]
    # 把要删除的内容记录在一个新列表中
    new_lst = []
    for el in lst:
    new_lst.append(el)
    # # 循环这个新列表. 删除原来的列表
    for el in new_lst: # 不会导致循环的列表的元素移动问题
    lst.remove(el) # 注意, 删除的是老列表
    print(lst)


    lst = ["王大锤", "王有才", "张小白", "刘大哥"]
    # # 删除掉姓王的
    new_lst = [] # 装要删除的内容
    for el in lst:
    if el.startswith("王"): # 判断字符串是否以xxx开头
    new_lst.append(el)
    # # 执行删除
    for el in new_lst:
    lst.remove(el)
    print(lst)

    # # 坑1
    dic = {}
    # # fromkeys是创建新字典。 不是在原有的基础上给你增加键值对
    d = dic.fromkeys("周杰伦", "王尼玛") # fromkeys是一个staticmethod 静态方法.
    dd = dict()
    ddd = {}
    print(d)

    # # 坑2
    # # 你的value如果是可变的数据类型。 所有的key都可以改动这个数据。 一个改动, 所有的value都跟着改变
    d = dict.fromkeys("周杰伦",["哇哈哈"])
    print(d)
    d["周"].append("爽歪歪")
    print(d)
    #
    print(id(d["周"]), id(d["杰"]), id(d["伦"]))


    set 集合: s = {1,2,3,4,}
    # 字典:{}
    # 字典的key: 不可变,不能重复, 底层存储是无序的
    # 集合里的元素: 不可变,不能重复. 底层也是无序的。 hash
    # 集合其实就是字典. 集合里面不存value , 集合中只存储key

    # # 应用(重点) 去重复
    # lst = ["周杰伦", "周杰伦", "王力宏", "王力宏", "胡辣汤"]
    # s = set(lst) # 集合
    # print(s)
    # # 转化成列表
    # print(list(s))

    # s = {1,2,} # 本身是可变的 不可哈希。 但是内部的元素是不可变的
    # s.add()
    # print(s)

    # list -> tuple
    # set -> frozenset

    # frozenset 可哈希的集合, 不可变.
    # s = frozenset([1,2,3,4,5])
    # print(s)
    # for el in s:
    # print(el)

    深浅拷贝
    1. = 赋值操作没有创建新的对象。 此时 两个变量指向的是同一个内存地址

    2. copy() [:] 浅拷贝。 拷贝第一层内容

    # 浅拷贝的问题
    # 优点: 省内存.
    # 缺点: 容易出现同一个对象被多个变量所引用
    # lst1 = ["孙悟空", "贝吉塔", "卡卡罗特",["七龙珠","战斗陀螺"]]
    # lst2 = lst1.copy() # 浅拷贝
    #
    # # lst1.append("短笛")
    # lst1[3].append("巴啦啦小魔仙")
    # print(lst1)
    # print(lst2)
    #
    # print(id(lst1), id(lst2))


    3. 深拷贝
    import copy
    copy.deepcopy() 深度拷贝。 把对象内部的所有内容都拷贝一份
    作用: 快速创建对象
    # 有点: 完全拷贝出一份两个对象之间除了数据相同。 没有任何关系
    # 缺点: 占内存
    # import copy # 引入拷贝模块
    # lst1 = ["孙悟空", "贝吉塔", "卡卡罗特",["七龙珠","战斗陀螺"]]
    # lst2 = copy.deepcopy(lst1) # 会把这个对象相关的内部信息全部复制一份
    #
    # lst1[3].append("巴啦啦小魔仙")
    # print(lst1)
    # print(lst2)
    #
    # print(id(lst1), id(lst2))

  • 相关阅读:
    iOS Button选中与取消
    IOS-UIButton的文本与图片的布局
    iOS滑动tableView来改变导航栏的颜色
    Mac下Vim编辑快捷键小结
    iOS 比较版本号大小的方法
    Symbol
    call和apply的区别及用法
    关于高并发
    java.io.IOException: Stream closed 的问题
    通俗易懂的 Java 位操作运算讲解
  • 原文地址:https://www.cnblogs.com/EuanXu/p/9853242.html
Copyright © 2011-2022 走看看