タプルのリストがあるとしましょう:
a = [(1, 2), (3, 4), (4, 5)]
および別のリスト、タプルなし:
b = [1, 2, 3]
リスト内包表記を使用して、 の各タプルの最初の値のみを のそれぞれの値で乗算するにはどうすればよいa
ですb
か? つまり、[a[0][0] * b[0], a[1][0] * b[1], a[2][0] * b[2]]
(等しいはずです[1, 6, 12]
)
タプルのリストがあるとしましょう:
a = [(1, 2), (3, 4), (4, 5)]
および別のリスト、タプルなし:
b = [1, 2, 3]
リスト内包表記を使用して、 の各タプルの最初の値のみを のそれぞれの値で乗算するにはどうすればよいa
ですb
か? つまり、[a[0][0] * b[0], a[1][0] * b[1], a[2][0] * b[2]]
(等しいはずです[1, 6, 12]
)
>>> a = [(1, 2), (3, 4), (4, 5)]
... b = [1, 2, 3]
>>> [x[0]*y for x, y in zip(a, b)]
[1, 6, 12]
zip
機能が鍵です。
たとえば、次のように使用できます。
[a[0]*b for a,b in zip(a,b)]
このzip
関数は、タプルのリストを作成します。リストは の引数の最短リストと同じくらい長く、各タプルzip
のth 要素は のth 引数から取得されます。i
i
zip
>>> c = [1, 2, 3]
>>> d = [4, 5, 6]
>>> zip(c,d)
[(1, 4), (2, 5), (3, 6)]