【Python 雑談・雑学】 ループ処理でインデックス番号が使いたいのなら enumerate() を使えば? 投稿一覧へ戻る
Published 2020年5月26日21:45 by mootaro23
SUPPORT UKRAINE
- Your indifference to the act of cruelty can thrive rogue nations like Russia -
次のような処理をしています。
こんなに print() 文を羅列するのではなくて for ループを使いますよね。
この for 文ではインデックス番号を利用してリストから値を取り出しています。
このような場合は、わざわざ range() 等を使用してインデックス番号を取得するよりも、enumerate() を利用したほうがスマートです。
ちなみに enumerate() は generator を返します。
ですから、next() を利用して値を1つずつ取り出すことができます。
next(friend_g) で取り出される値は (index, value) からなるタプルです。
ですから当然アンパックも利用できます。
top_friends = ['Nana', 'Saki', 'Yuka']
print(f'My top 1 friend is {top_friends[0]}.')
print(f'My top 2 friend is {top_friends[1]}.')
print(f'My top 3 friend is {top_friends[2]}.')
print(f'My top 1 friend is {top_friends[0]}.')
print(f'My top 2 friend is {top_friends[1]}.')
print(f'My top 3 friend is {top_friends[2]}.')
こんなに print() 文を羅列するのではなくて for ループを使いますよね。
for i in range(3):
print(f'My top {i + 1} friend is {top_friends[i]}.')
print(f'My top {i + 1} friend is {top_friends[i]}.')
この for 文ではインデックス番号を利用してリストから値を取り出しています。
このような場合は、わざわざ range() 等を使用してインデックス番号を取得するよりも、enumerate() を利用したほうがスマートです。
for i, friend in enumerate(top_friends):
print(f'My top {i + 1} friend is {friend}.')
print(f'My top {i + 1} friend is {friend}.')
ちなみに enumerate() は generator を返します。
ですから、next() を利用して値を1つずつ取り出すことができます。
friend_g = enumerate(top_friends)
print(next(friend_g))
print(next(friend_g))
next(friend_g) で取り出される値は (index, value) からなるタプルです。
ですから当然アンパックも利用できます。
index, friend = next(friend_g)
print(index)
print(friend)
print(index)
print(friend)
この記事に興味のある方は次の記事にも関心を持っているようです...
- People who read this article may also be interested in following articles ... -