note.nkmk.me

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

Date: 2017-11-28 / tags: Python
スポンサーリンク

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
スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事