我有两个长度相等的整数列表。我想使用以下行将第一个列表的每个元素添加到第二个列表的相应元素中:
complete_list = [first_list[i] + second_list[i] for i in range(len(first_list))]
然而,first_list的一些元素是特殊数字,我希望将它们从上述操作中豁免,同时添加其他元素以生成complete_list。谢谢!
答案 0 :(得分:0)
你可以在listcomp的末尾加上if
:
>>> first_list = [1,2,3,10]
>>> second_list = [10,20,30,50]
>>> special = {2, 3}
>>> [first_list[i]+second_list[i] for i in range(len(first_list)) if first_list[i] not in special]
[11, 60]
虽然我可能在这里使用zip
:
>>> [a+b for a,b in zip(first_list, second_list) if a not in special]
[11, 60]
如果您希望a
通过未经调整,您可以移动if
并使用X if Y else Z
三元语法:
>>> [a+b if a not in special else a for a,b in zip(first_list, second_list)]
[11, 2, 3, 60]
答案 1 :(得分:0)
我倾向于将您的原始示例写为:
a = [1, 2, 3]
b = [4, 5, 6]
from operator import add
c = map(add, a, b)
# [5, 7, 9]
然后,如果您只想根据a
上的条件“不添加”元素,那么在b
上构建一个生成器,引用a
上的相应元素并使其成为0
1}}对于无操作。
special = {2}
b2 = (j if a[i] not in special else 0 for i, j in enumerate(b))
map(add, a, b2)
# [5, 2, 9]