同じ長さの整数のリストが2つあります。次の行を使用して、最初のリストの各要素を2番目のリストの対応する要素に追加したいと思います。
complete_list = [first_list[i] + second_list[i] for i in range(len(first_list))]
ただし、first_listの一部の要素は特殊な番号であり、complete_listを作成するために他の要素を追加しながら、上記の操作からそれらを除外したいと思います。ありがとう!
同じ長さの整数のリストが2つあります。次の行を使用して、最初のリストの各要素を2番目のリストの対応する要素に追加したいと思います。
complete_list = [first_list[i] + second_list[i] for i in range(len(first_list))]
ただし、first_listの一部の要素は特殊な番号であり、complete_listを作成するために他の要素を追加しながら、上記の操作からそれらを除外したいと思います。ありがとう!
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
未調整でパススルーする場合は、を移動して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]
私はあなたの元の例を次のように書く傾向があります:
a = [1, 2, 3]
b = [4, 5, 6]
from operator import add
c = map(add, a, b)
# [5, 7, 9]
次に、の基準に応じて要素のみを「追加しない」ようにする場合は、の対応する要素を参照し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]