使用列表推导将项目保留在第二个列表中

voi*_*nyx 0 python list-comprehension list not-operator

我试图使用列表推导来从列表中删除一些项目,只需保留未指定的项目.

例如,如果我有2个列表,a = [1,3,5,7,10]并且b = [2,4]我希望保留所有项目a不在与数字相对应的索引中b.

现在,我尝试使用,y = [a[x] for x not in b]但这会产生一个SyntaxError.

y = [a[x] for x in b] 工作正常,并保持我想要删除的元素.

那我该怎么做呢?另外,这是一个很好的方法,或者我应该使用del

ale*_*cxe 6

您可以在以下位置使用enumerate()和查找索引b:

>>> a = [1, 3, 5, 7, 10]
>>> b = [2, 4]
>>> [item for index, item in enumerate(a) if index not in b]
[1, 3, 7]
Run Code Online (Sandbox Code Playgroud)

请注意,为了改善查找时间,最好b使用set而不是list.在列表中平均查找集合O(1) - 列表的长度O(n)在哪里n.