首页 > 解决方案 > 如果元素不等于另一个列表中的元素,则从列表中删除每个第 n 个元素?

问题描述

我有两个字符串列表:

l1 = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6']
l2 = ['a3', 'a4']

我需要从l1if 元素中删除每个第二个元素不等于 list 中的元素之一l2

到目前为止,我已经尝试过:

for e1 in l1:
    i=0
    for e2 in l2:
        if e1!=e2:
            l1.remove(l1[i])
            i=i+1

预期输出:

l1 = ['a1', 'a3', 'a4, 'a5']

如何正确完成?

标签: pythonlist

解决方案


您可以进行列表理解以重新创建l1

l1 = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6']
l2 = ['a3', 'a4']
l2s = set(l2)

l1 = [item for index,item in enumerate(l1) if (index & 1) == 0 or item in l2s]
print(l1)

按要求输出

如果您的真实数据非常大,我创建l2s它的目的是为了加快速度。item in l2sl2


推荐阅读