#!/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