我有一个问题,关于for循环,列表(附加/删除)。
以下是列表:
L = ['Josh', 'started:', '14:39', '8305955', 'frenchs', '10', '8305955-fr001', '8305955-fr002', '8305955-fr003', '8305955-fr004', '8305955-fr005', 'ended:', '14:39']
当我运行以下代码时。
D = "-fr"
E = []
for i in L:
if D not in i:
L.remove(i)
else:
E.append(i)
L[6]
已删除,并且未附加到列表E中。
列表E应该返回以下内容,但缺少第一个索引。
E = ['8305955-fr001', '8305955-fr002', '8305955-fr003', '8305955-fr004', '8305955-fr005']
答案 0 :(得分:4)
在迭代列表时,您不应修改列表。解决此问题的一种简单方法是通过对副本进行切片来对其进行迭代:
for i in L[:]:
答案 1 :(得分:2)
您可以在使用copy.copy(https://docs.python.org/3/library/copy.html)遍历列表的同时复制列表
import copy
L = ['Josh', 'started:', '14:39', '8305955', 'frenchs', '10', '8305955-fr001', '8305955-fr002', '8305955-fr003', '8305955-fr004', '8305955-fr005', 'ended:', '14:39']
copy_L = copy.copy(L)
D = "-fr"
E = []
for i in copy_L:
if D not in i:
L.remove(i)
else:
E.append(i)
print(E)
#['8305955-fr001', '8305955-fr002', '8305955-fr003', '8305955-fr004', '8305955-fr005']