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))

  • 相关阅读:
    leetcode231 2的幂 leetcode342 4的幂 leetcode326 3的幂
    leetcode300. Longest Increasing Subsequence 最长递增子序列 、674. Longest Continuous Increasing Subsequence
    leetcode64. Minimum Path Sum
    leetcode 20 括号匹配
    算法题待做
    leetcode 121. Best Time to Buy and Sell Stock 、122.Best Time to Buy and Sell Stock II 、309. Best Time to Buy and Sell Stock with Cooldown 、714. Best Time to Buy and Sell Stock with Transaction Fee
    rand7生成rand10,rand1生成rand6,rand2生成rand5(包含了rand2生成rand3)
    依图
    leetcode 1.Two Sum 、167. Two Sum II
    从分类,排序,top-k多个方面对推荐算法稳定性的评价
  • 原文地址:https://www.cnblogs.com/EuanXu/p/9853242.html
Copyright © 2011-2022 走看看