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?
您可以在以下位置使用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.