强大自己是唯一获得幸福的途径,这是长远的,而非当下的玩乐!
-
使用for循环,循环列表或字典过程中,改变其大小。
# 列表
>>> l1 = [11, 22, 33, 44, 55, 66]
>>> del l1[1::2] # 使用del可以正常的删除
>>> print(l1)
[11, 33, 55]
>>> for i in range(len(l1)): # 如果用for,则结果与预想不一样
... if i % 2 == 1:
... del l1[i]
...
>>> print(l1)
[11, 55]
>>>
# 字典
>>> dic1 = {"name": "zuowei", "age": 18, "hobby": "lp"}
>>> for i in dic1:
... if "name" in dic1:
... del dic1[i]
... # 如果在循环过程中改变了大小,会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: dictionary changed size during iteration
解决:
# 列表
# 列表可以使用del一次性删除
# 如若使用for应倒叙删除
>>> l1 = [11, 22, 33, 44, 55, 66]
>>> for i in range(len(l1)-1, -1, -1):
... if i % 2 == 1:
... del l1[i]
...
>>> print(l1)
[11, 33, 55]
# 字典
# 由于使用for循环删除会报错,那么可以将要删除的key追加到一个列表内,然后用其他方式删除
>>> dic1 = {"name": "zuowei", "age": 18, "hobby": "lp"}
>>> l1 = []
>>> for k, v in dic1.items():
... if v == "lp":
... l1.append(k) # 添加满足条件要删除的字典key到列表l1
...
>>> for i in l1: # 循环这个列表
... del dic1[i] # 删除对应的key
...
>>> print(dic1)
{'name': 'zuowei', 'age': 18}