Python For循环中的函数未返回正确的值
我有一个问题,它与for循环、list(追加/删除)有关 名单如下:Python For循环中的函数未返回正确的值,python,list,Python,List,我有一个问题,它与for循环、list(追加/删除)有关 名单如下: 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
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']
您不应该在迭代列表时修改它。解决此问题的一种简单方法是通过切片对副本进行迭代:
for i in L[:]:
您可以在使用copy.copy()对列表进行迭代时复制列表
是的,你可能不应该在迭代列表时修改它——试着用for循环写出它,看看它是否开始做你想做的事情。
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']