我设法通过列表推导找到了一个有效的解决方案。但我很好奇为什么这样做。有人可以解释一下吗?
代码:
def filter_ms_list(ms_list):
trash_suffix = ['C0', 'C1', 'C2', 'C3', 'C4']
temp_list = ms_list
for ms in temp_list:
for suffix in trash_suffix:
if ms.endswith(suffix):
ms_list.remove(ms)
break
return ms_list
ms_list = ['IJM612C0', 'IJM612C1', 'IJM612C2', 'IJM612C3', 'IJM666', 'IJM667']
函数返回['IJM612C1', 'IJM612C3', 'IJM666', 'IJM667']
虽然它应该返回['IJM666', 'IJM667']
调试时我发现在删除'IJM612C0'
后,它会跳转到'IJM612C2'
而不是列表中的第二个元素。
起初我使用相同的列表来删除和迭代,但即使使用临时列表,如你所见,它也不起作用。
有人可以解释一下吗?谢谢!