0

同じ長さの整数のリストが2つあります。次の行を使用して、最初のリストの各要素を2番目のリストの対応する要素に追加したいと思います。

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

ただし、first_listの一部の要素は特殊な番号であり、complete_listを作成するために他の要素を追加しながら、上記の操作からそれらを除外したいと思います。ありがとう!

4

2 に答える 2

0

iflistcompの最後にを貼り付けることができます。

>>> 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未調整でパススルーする場合は、を移動して3値構文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 に答える
0

私はあなたの元の例を次のように書く傾向があります:

a = [1, 2, 3]
b = [4, 5, 6]

from operator import add
c = map(add, a, b)
# [5, 7, 9]

次に、の基準に応じて要素のみを「追加しない」ようにする場合は、の対応する要素を参照しaてジェネレーターを構築し、操作を行わないようにします。ba0

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 に答える