Pythonでenumerateとzipを組み合わせて同時に使う
Posted: 2017-11-28 / Tags: Python
Pythonのforループでリストなどの要素を取り出すときに便利なのが、enumerate()
関数とzip()
関数。
enumerate()
は要素と同時にインデックスを取得することができ、zip()
は複数のリストの要素をまとめて取得することができる。
以下、enumerate()
とzip()
を組み合わせて同時に使うときの注意点を述べる。
スポンサーリンク
enumerateとzipを組み合わせて同時に使うときの注意点
enumerate()
関数とzip()
関数を組み合わせて同時に使う場合、つまり、複数のリストの要素とインデックスを同時に取得したい場合は注意が必要。
for i, (a, b, ...) in enumerate(zip( ... ))
のように、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
source: for_enumerate_zip.py
zip()
でまとめた要素をタプルとして受け取ることもできる。
for i, t in enumerate(zip(names, ages)):
print(i, t)
# 0 ('Alice', 24)
# 1 ('Bob', 50)
# 2 ('Charlie', 18)
source: for_enumerate_zip.py
for i, t in enumerate(zip(names, ages)):
print(i, t[0], t[1])
# 0 Alice 24
# 1 Bob 50
# 2 Charlie 18
source: for_enumerate_zip.py
なお、標準ライブラリitertoolsモジュールの関数count()
とzip()
を利用すると、入れ子にならない(i, a, b)
のような形を実現できる。
スポンサーリンク