网站开发合作协议合同范本,网站重新备案需要多长时间,最新足球消息,wordpress php7.3 在 Python 中#xff0c;在迭代列表的同时修改它可能导致意外的结果#xff0c; 因为这会破坏迭代器的状态。在你的代码中#xff0c;当你尝试删除元素时#xff0c; 迭代器可能会跳过下一个元素#xff0c;导致删除的不是你预期的元素。 … 在 Python 中在迭代列表的同时修改它可能导致意外的结果 因为这会破坏迭代器的状态。在你的代码中当你尝试删除元素时 迭代器可能会跳过下一个元素导致删除的不是你预期的元素。 lst [1, 2, 2, 3, 5]
for i in lst:if i 2:lst.remove(i)
print(lst) # [1, 2, 3, 5] 遍历时第一个2做删除时跳过了第二个2所以第二个2没被删除 # 解决办法在循环拷贝的列表中删除当前列表元素不会影响拷贝列表的迭代
lst [1, 2, 2, 3, 5]
for i in lst.copy():if i 2:lst.remove(i)
print(lst) # [1, 3, 5] # 字典也是一样可以转换成列表循环也可以拷贝一个意思
my_dict {a: 1, b: 2, c: 2, d: 3}# for k, v in my_dict.items(): # RuntimeError: dictionary changed size during iterationfor k, v in list(my_dict.items()):if v 2:my_dict.pop(k, 0)
print(my_dict) # {a: 1, d: 3} my_dict {a: 1, b: 2, c: 2, d: 3}
for k, v in my_dict.copy().items():if v 2:my_dict.pop(k, 0)
print(my_dict) # {a: 1, d: 3}