zoukankan      html  css  js  c++  java
  • day07 Python中列表和字典会遇到的坑

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # @Author: fhb
    # @Date  : 2018/10/25
    # @Desc  :
    
    ##  循环删除列表坑
    lst = ["王大锤", "王有才", "张小白", "刘大哥"]
    # 清空这个列表
    # lst.clear()
    
    for el in lst:
        lst.remove(el) # 删除是不彻底的。 原因是每次删除都会导致元素的移动。 每次都会更新一次索引
    
    print(lst) # ['王有才', '刘大哥']
    
    # 把要删除的内容记录在一个新列表中
    new_lst =  []
    for el in lst:
        new_lst.append(el)
    # 循环这个新列表. 删除原来的列表
    for el in new_lst: # 不会导致循环的列表的元素移动问题
        lst.remove(el) # 注意, 删除的是老列表
    
    
    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)
    
    
    
    ## 循环删除字典坑
    
    dic = {"jay":'周杰伦', "jj":"林俊杰 ", "jack": "莱昂纳多迪卡普里奥"}
    # 清空字典
    # dic.clear()
    
    # for k in dic: # dictionary changed size during iteration
    #     dic["haha"] = "王大锤"
    
    # 将要删除的内容在列表中保存
    lst = [] # 所有的key
    for k in dic:
        lst.append(k)
    for el in lst:
        dic.pop(el)
    print(dic)
    
    
    ## formkeys 坑
    # fromkeys() 帮我们创建字典
    # 正确用法
    d = dict.fromkeys("周杰伦", "王尼玛")
    print(d)
    
    # 坑1
    dic = {}
    # fromkeys是创建新字典。 不是在原有的基础上给你增加键值对
    d = dic.fromkeys("周杰伦", "王尼玛") # fromkeys是一个staticmethod  静态方法.
    # dd = dict()
    # ddd = {}
    print(d)  # {'周': '王尼玛', '杰': '王尼玛', '伦': '王尼玛'}
    print(dic) # {}
    
    # # 坑2
    # 你的value如果是可变的数据类型。 所有的key都可以改动这个数据。 一个改动, 所有的value都跟着改变
    d = dict.fromkeys("周杰伦",["哇哈哈"])
    print(d) # {'周': ['哇哈哈'], '杰': ['哇哈哈'], '伦': ['哇哈哈']}
    d["周"].append("爽歪歪")
    print(d)  # {'周': ['哇哈哈', '爽歪歪'], '杰': ['哇哈哈', '爽歪歪'], '伦': ['哇哈哈', '爽歪歪']}
    
    print(id(d["周"]), id(d["杰"]), id(d["伦"])) # 4524578248 4524578248 4524578248
    

      

  • 相关阅读:
    CMake 用法导览
    Irrlicht 1.8.4 + Win7 + VC2015 + x64 +OpenGL编译
    VirtualBox 5.1.14 获取VirtualBox COM对象错误
    CGAL Manual/tutorial_hello_world.html
    CGAL 介绍
    Open CASCADE 基础类(Foundation Classes)
    OpenCASCADE 基础
    Nginx 反向代理详解
    修改docker容器中的hosts文件
    Jmeter 设置连接oracle数据库
  • 原文地址:https://www.cnblogs.com/fanghongbo/p/9850429.html
Copyright © 2011-2022 走看看