python - 比较两个列表并将列表 1 中的值替换为列表 2 中的值
问题描述
我有两个清单。
a = [1,2,3,4,0,4,5,6,3,6,0,5,6,8,0,3]
b = [1,2, None,4,5,4,5,6,3,6,7,5,6,8,4, None]
我想要一个这样的结果列表。
new_list = [1,2,3,4,5,4,5,6,3,6,7,5,6,8,4,3]
列表 b 仅替换列表 a 中的 0,而不涉及其他元素,例如 None 没有被替换。
我该怎么做呢?提前致谢。如果您需要任何其他信息,请告诉我。
我尝试了以下方法,但它不起作用。
_ = dict(zip(a,b))
for k,v in _.items():
if k == 0:
a = a.replace(k,v)
解决方案
您可以使用zip
一个简单的列表推导来生成一个新列表,方法是选择元素a
是否不为 0 或b
相应a
元素是否为零:
a = [1, 2, 3, 4, 0, 4, 5, 6, 3, 6, 0, 5, 6, 8, 0, 3]
b = [1, 2, None, 4, 5, 4, 5, 6, 3, 6, 7, 5, 6, 8, 4, None]
result = [y if x == 0 else x for x, y in zip(a, b)]
print(result)
# [1, 2, 3, 4, 5, 4, 5, 6, 3, 6, 7, 5, 6, 8, 4, 3]
推荐阅读
- python - 使用 Python 进行本地开发的无服务器 Lambda 层
- angular - 如何使用此处的地理编码和从具有 API 密钥的角度服务中搜索 api
- excel - Excel - 删除单元格右侧的零
- python - Pandas to_csv 方法的选项 quoting=csv.QUOTE_MINIMAL 不起作用
- javascript - HTML5 嵌套 DnD 界面仅允许使用 sortable.js 在表单字段中放置嵌套元素
- node.js - 从请求中获取主机 WITH PORT
- swagger - 使用 Swashbuckle 对 Swagger 页面的 Schemas 部分进行排序
- html - Flexbox 列表对齐在 3 个元素行上的元素之间留出空间
- r - 如何将代码覆盖率的阈值提供给 covr(R 代码覆盖率)
- javascript - 如何在 onChange 中使用 e.preventDefault 来选择标签