python - 如果元素不等于另一个列表中的元素,则从列表中删除每个第 n 个元素?
问题描述
我有两个字符串列表:
l1 = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6']
l2 = ['a3', 'a4']
我需要从l1
if 元素中删除每个第二个元素不等于 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']
如何正确完成?
解决方案
您可以进行列表理解以重新创建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 l2s
l2
推荐阅读
- javascript - Laravel 验证表中的唯一值以放入错误函数(js)
- gojs - 如何在 GOJS-Floorplanner 中移动单个墙时将连接的墙一起移动
- mongodb - Mongodb - 根据其他字段值添加额外字段
- android - 如何将 AudioRecord 类中识别的语音保存在文件中?
- amazon-web-services - 在 Groovy 中为 soapUI 生成 AWS 签名
- java - 为什么 Scanner Class 不像 println 方法那样使用重载的概念
- java - Xpath 为一个没有任何唯一 ID 的元素写入
- nuxt.js - Nuxt.js 和 koajs 如何在 asyncData 方法中使用 ctx.status 或 ctx.body
- java - 自动装配其他 bean 时未注册自定义 HealthIndicator
- ruby-on-rails - 嵌套属性未保存(设计注册控制器/Rails 5)