我有一个清单:
list = [1, 2, 'unwanted', 3, 'green', 'tomato', 'unwanted', 'random', 45]
我尝试删除所有'unwanted'
项,以及接下来的两项,无论它们是哪一项。最简单的方法是什么?如果可能的话,我希望通过列表理解来做到这一点。
答案 0 :(得分:4)
您可以通过检查当前位置或列表中的前面项目中是否有'unwanted'
来执行此操作:
>>> lst = [1, 2, 'unwanted', 3, 'green', 'tomato', 'unwanted', 'random', 45]
>>> [item for idx, item in enumerate(lst) if 'unwanted' not in lst[max(0, idx-2): idx+1]]
[1, 2, 'tomato']
使用与内置函数同名的变量通常是个坏主意,所以我在这里将其重命名为lst
。
答案 1 :(得分:0)
你可以这样做:
[element for ndx, element in enumerate(list) if (list[ndx] != 'unwanted') & (list[ndx-1] != 'unwanted') & (list[ndx-2] != 'unwanted')]