次のような処理をしています。
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() 文を羅列するのではなくて for ループを使いますよね。
for i in range(3):
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}.')
ちなみに enumerate() は generator を返します。
ですから、next() を利用して値を1つずつ取り出すことができます。
friend_g = enumerate(top_friends)
print(next(friend_g))
next(friend_g) で取り出される値は (index, value) からなるタプルです。
ですから当然アンパックも利用できます。
index, friend = next(friend_g)
print(index)
print(friend)