python - 比较两个列表以返回一个列表,其中所有元素都为 0,除了在保持索引时匹配的元素?
问题描述
我对此有点坚持:
a = [1,2,3,2,4,5]
b = [2,5]
我想比较这两个列表并生成一个列表,其中包含与 相同的项目a
,但没有b
设置为 0 的任何项目。有效输出将是这些:
c = [0,2,0,0,0,5]
# or
c = [0,0,0,2,0,5]
我不会事先知道任一列表中的数字元素。
我试过for
循环但是
['0' for x in a if x not in b]
它删除了 2 的所有实例。我只想删除一次(它b
暂时出现一次)。我需要在上面添加一个条件loop
来保持匹配的元素。
解决方案
以下将起作用:
a = [1,2,3,2,4,5]
b = [2, 5]
output = []
for x in a:
if x in b:
b.remove(x)
output.append(x)
else:
output.append(0)
或者对于单线,使用b.remove(x)
返回的事实None
:
a = [1,2,3,2,4,5]
b = {2, 5}
output = [(b.remove(x) or x) if x in b else 0 for x in a]
推荐阅读
- android - 是否有通过更改 recyclerview 中的项目数调用的事件?
- google-api-client - 无法使用 Python 客户端检索抓取错误
- python - python活动目录模块pyad max返回组成员
- javascript - 无法从 ul 待办事项列表中删除列表项
- node.js - 如何让 alexa 从数组中给出最好的事实
- javascript - 带有复选框的Javascript删除行
- javascript - 为什么工具提示放错了位置?
- ionic-framework - iOS 模拟器中缺少 Woocommerce 产品或 Wordpress 服务
- vue.js - vue-i18n 如何在 js(运行时)中刷新/访问 $i18n.locale 后保持语言?
- javascript - 获取 JSON 解析对象中的所有键/数组键?