首页 > 解决方案 > 比较两个列表并将列表 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)

标签: python

解决方案


您可以使用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]

推荐阅读