0

我有两个相等长度的整数列表。我想使用以下行将第一个列表的每个元素添加到第二个列表的相应元素中:

complete_list = [first_list[i] + second_list[i] for i in range(len(first_list))]

但是,first_list 的某些元素是特殊数字,我想将它们从上述操作中排除,同时添加其他元素来制作 complete_list。谢谢!

4

2 回答 2

0

我倾向于将您的原始示例写为:

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]
于 2013-01-30T17:07:58.320 回答
0

您可以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]
于 2013-01-30T16:31:09.337 回答