我有两个相等长度的整数列表。我想使用以下行将第一个列表的每个元素添加到第二个列表的相应元素中:
complete_list = [first_list[i] + second_list[i] for i in range(len(first_list))]
但是,first_list 的某些元素是特殊数字,我想将它们从上述操作中排除,同时添加其他元素来制作 complete_list。谢谢!
我有两个相等长度的整数列表。我想使用以下行将第一个列表的每个元素添加到第二个列表的相应元素中:
complete_list = [first_list[i] + second_list[i] for i in range(len(first_list))]
但是,first_list 的某些元素是特殊数字,我想将它们从上述操作中排除,同时添加其他元素来制作 complete_list。谢谢!
我倾向于将您的原始示例写为:
a = [1, 2, 3]
b = [4, 5, 6]
from operator import add
c = map(add, a, b)
# [5, 7, 9]
然后,如果您只希望根据 on 的条件“不添加”元素a
,则构建一个生成器,通过b
引用相应的元素a
并使其成为0
无操作。
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]
您可以if
在 listcomp 的末尾添加一个:
>>> 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]