Pythonのforループでenumerateとzipを同時に使う

forループで便利なenumerateとzip

Pythonのforループでリストなどのシーケンスの要素を取り出すときに便利なのが、enumerate関数とzip関数。 enumerateは要素と同時にインデックスを取得することができます。

zipは複数のリストの要素をまとめて取得することができます。

enumerateとzipを同時に使うときは注意が必要 enumerate関数とzip関数を同時に使う場合、つまり、複数のリストの要素とインデックスを同時に取得したい場合は注意が必要。

for i, (a, b) in ...のように、zipでまとめた要素に括弧をつける必要があります。
names = ['Alice', 'Bob', 'Charlie']
ages = [24, 50, 18]

for i, (name, age) in enumerate(zip(names, ages)):
    print(i, name, age)
# 0 Alice 24
# 1 Bob 50
# 2 Charlie 18

zipはタプルを返すため、受け取るときはタプルとして処理しないといけない。

for i, t in enumerate(zip(names, ages)):
    print(i, t)
# 0 ('Alice', 24)
# 1 ('Bob', 50)
# 2 ('Charlie', 18)

次のような書き方も可能だがあまり実用的ではないだろう。

for i, t in enumerate(zip(names, ages)):
    print(i, t[0], t[1])
# 0 Alice 24
# 1 Bob 50
# 2 Charlie 18
Last Updated: 6/26/2019, 10:34:03 PM