我正在尝试使用另一个列表过滤掉一个列表。但是,我用来过滤另一个列表的列表元素不是相同的字符串。请看我的例子,因为它会更有意义:
mylist = ['14001IB_L1P0', '14001OB_L1P1', '14002IB_L3P0', '14003OB_L1P1', '14001OB_L2P0']
remove_list = ['14001', '14002']
我想从 mylist 中删除以 remove_list 中的值开头的值。我试过这样做:
filtered_mylist = mylist[:]
for x in remove_list:
for i in filtered_mylist:
if x in i:
print('remove ' +i)
filtered_mylist.remove(i)
else:
print('keep '+i)
然而,结果如下:
remove 14001IB_L1P0
keep 14002IB_L3P0
keep 14003OB_L1P1
remove 14001OB_L2P0
keep 14001OB_L1P1
remove 14002IB_L3P0
这就是filtered_mylist的组成:
['14001OB_L1P1', '14003OB_L1P1']
但是,它应该只包含 1 个元素:
['14003OB_L1P1']
在我看来,由于某种原因,循环跳过了第一个循环中的第二个元素“14001OB_L1P1”。为什么会这样?