Pythonのmap()
関数は、リストやタプルなどのシーケンスの各要素に指定した関数を適用し、新しいイテレータを生成します。しかし、map()
関数を使用してリストを処理する際に、要素のインデックスにアクセスする方法はどうすればよいでしょうか?この記事では、その方法を説明します。
まず、enumerate()
関数を使用して、インデックスとアイテムのタプルを生成します。次に、map()
関数に渡す関数でインデックスとアイテムの値を展開します。この関数は、各イテレーションでインデックスとアイテムを含むタプルを受け取ります。
以下に具体的なコードを示します。
ranked_users = ['jon','bob','jane','alice','chris']
user_details = map(lambda (i,x): {'name':x, 'rank':i}, enumerate(ranked_users))
このコードでは、enumerate(ranked_users)
がインデックスとユーザー名のタプルを生成し、そのタプルはlambda
関数に渡されます。lambda
関数はタプルを展開し、ユーザー名とそのインデックスを辞書に格納します。
ただし、Python3では、lambda
関数はタプルを展開しないため、上記のコードはPython3では動作しません。その代わりに、リスト内包表記を使用することをお勧めします。
ranked_users = ['jon','bob','jane','alice','chris']
user_details = [{'name':x, 'rank':i} for i,x in enumerate(ranked_users)]
このコードはPython2とPython3の両方で動作し、map()
関数とlambda
関数を使用するよりも読みやすく、実行速度も速いです。
以上が、Pythonのmap()
関数を使用してリストを処理する際に、要素のインデックスにアクセスする方法です。この情報がPythonのプログラミングに役立つことを願っています。