【Python】enumerate()関数でリストの要素とインデックスを取得!
Pythonでリストの要素とインデックスを取得するにはenumerate()を使用します。
enumerate()とはリストを反復処理しているときに要素のインデックスを取得することができる関数であり、リストやタプルなどのデータの集まりである要素にインデックスをつけて表示することができます。
その為、要素を取り出した場合に「この要素は何番目の要素なのか」を確認したい場合などに使用することができます。
また、enumerate()関数のパラメータにはリスト以外にもタプルでも指定することができ、さらに開始値を指定するとインデックスをずらしてリストの要素と一緒に取得することができます。
今回はPythonのenumerate()関数でリストの要素とインデックスを取得する方法を下記の内容で解説していきます。
⚫︎ 一次元リストとインデックスを取得する場合
⚫︎ インデックスをずらして一次元リストを取得する場合
⚫︎ 多次元リストとインデックスを取得する場合
⚫︎ インデックスをずらして多次元リストを取得する場合
⚫︎ enumerate()とfor文と組み合わせてリストとインデックスを取得する方法
⚫︎ enumerate()で文字列の文字とインデックスを取得する方法
目次
enumerate()とは
enumerate()とは、リストを反復処理しているときに要素のインデックスを取得することができる関数となります。
反復可能なオブジェクト(ゼロ以上)を受け取り、それらをタプルに集約して返すようになります。
enumerate()の書き方
enumerate()の構文は下記となります。
1 |
enumerate(リストなど, 開始値) |
パラメータ
enumerate()のパラメーターは下記となります
・リストなど:
反復をサポートするシーケンス、イテレータ、またはオブジェクトを指定する
・開始値:
カウントを開始するインデックスを指定する
(もし開始値が省略されると、開始は0と見なされる)
enumerate()のパラメータにリストを指定すると、リストの要素とリストの要素分のインデックスを取得することができます。
リストのパラメータはリストをそのまま指定しても構いませんし、オブジェクトとして指定しても構いません。
さらに、パラメータに開始値を指定すると、インデックスの取得の開始位置を設定することができます。
また、今回はリストの要素を取得していますが、タプル(tuple)や辞書(dictionary)でも取得は可能です。
戻り値
カウンターを要素に追加して返します。
返されるオブジェクトは列挙オブジェクトです。
一次元リストの要素とインデックスを取得するサンプルコード
一次元リストの要素とインデックスを取得するサンプルコードを紹介します。
一次元リストとインデックスを取得する場合
一次元リストとインデックスを取得する場合はenumerate()関数のパラメータにリストを指定します。
例
1 2 3 4 5 6 7 |
fruits = ['バナナ', 'リンゴ', 'イチゴ', 'メロン'] fuits_list = list(enumerate(fruits)) print(fuits_list) num = [1, 2, 3, 4 ] num_list = list(enumerate(num)) print(num_list) |
出力結果
[(0, ‘バナナ’), (1, ‘リンゴ’), (2, ‘イチゴ’), (3, ‘メロン’)]
[(0, 1), (1, 2), (2, 3), (3, 4)]
enumerate()のパラメータにリストを指定することでリストの要素とインデックスを同時に取得しています。
インデックスをずらしてリストを取得する場合
インデックスをずらしてリストを取得する場合はenumerate()のパラメータに開始値を設定します。
開始値を設定することでインデックスの取得の開始をずらすことができます。
例
1 2 3 4 |
fruits = ['バナナ', 'リンゴ', 'イチゴ', 'メロン'] fuits_list = list(enumerate(fruits, 3)) print(fuits_list) |
出力結果
[(3, ‘バナナ’), (4, ‘リンゴ’), (5, ‘イチゴ’), (6, ‘メロン’)]
開始値を3に設定することでインデックスの取得の開始が3からになりました。
多次元リストの要素とインデックスを取得するサンプルコード
多次元リストの要素とインデックスを取得するサンプルコードを紹介します。
多次元リストとインデックスを取得する場合
多次元リストとインデックスを取得する場合はenumerate()関数のパラメータに多次元リストを指定します。
二次元リストの場合
1 2 3 4 5 6 7 8 9 10 11 |
Prefecture = [ ["北海道" ], ["青森県", "岩手県", "秋田県", "宮城県"], ["鹿児島", "長崎県", "熊本県", "福岡県", "宮崎県"] ] Prefecture_list = list(enumerate(Prefecture)) Touhoku_list = list(enumerate(Prefecture[1])) print("県名を取得") print(Prefecture_list) print("東北の県名を取得") print(Touhoku_list) |
出力結果
県名を取得
[(0, [‘北海道’]), (1, [‘青森県’, ‘岩手県’, ‘秋田県’, ‘宮城県’]), (2, [‘鹿児島’, ‘長崎県’, ‘熊本県’, ‘福岡県’, ‘宮崎県’])]
東北の県名を取得
[(0, ‘青森県’), (1, ‘岩手県’), (2, ‘秋田県’), (3, ‘宮城県’)]
このように二次元リストの要素をインデックスとまとめて取得することができます。
また、二次元リストの後ろにインデックスを指定することで二次元リストの中にあるリストの要素をインデックスとまとめて取得することができます。
続いて、三次元リストの要素をインデックスとまとめて取得してみます。
三次元リストの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Prefecture = [ [["北海道" ], ["青森県", "岩手県", "秋田県", "宮城県", "新潟県", "福島県"]], [["鹿児島", "長崎県", "熊本県", "福岡県", "宮崎県", "佐賀県", "大分県"],["沖縄県"]] ] PrefectureAll_list = list(enumerate(Prefecture)) Prefecture_list = list(enumerate(Prefecture[1])) Kyusyu_list = list(enumerate(Prefecture[1][0])) print("・インデックスをずらして県名とインデックスを取得") print(PrefectureAll_list) print("・インデックスをずらして九州と沖縄の県名とインデックスを取得") print(Prefecture_list) print("・インデックスをずらして九州の県名とインデックスを取得") print(Kyusyu_list) |
出力結果
・県名とインデックスを取得
[(0, [[‘北海道’], [‘青森県’, ‘岩手県’, ‘秋田県’, ‘宮城県’, ‘新潟県’, ‘福島県’]]), (1, [[‘鹿児島’, ‘長崎県’, ‘熊本県’, ‘福岡県’, ‘宮崎県’, ‘佐賀県’, ‘大分県’], [‘沖縄県’]])]
・九州と沖縄の県名とインデックスを取得
[(0, [‘鹿児島’, ‘長崎県’, ‘熊本県’, ‘福岡県’, ‘宮崎県’, ‘佐賀県’, ‘大分県’]), (1, [‘沖縄県’])]
・九州の県名とインデックスを取得
[(0, ‘鹿児島’), (1, ‘長崎県’), (2, ‘熊本県’), (3, ‘福岡県’), (4, ‘宮崎県’), (5, ‘佐賀県’), (6, ‘大分県’)]
このように三次元リストの要素をインデックスとまとめて取得することができます。
また、三次元リストの後ろにインデックスを指定することで三次元リストの中にあるリストの要素をインデックスとまとめて取得することができます。
インデックスをずらして多次元リストを取得する場合
インデックスをずらして多次元リストを取得する場合はenumerate()のパラメータに開始値を指定します。
二次元リストの場合
1 2 3 4 5 6 7 8 9 10 11 12 |
Prefecture = [ ["北海道" ], ["青森県", "岩手県", "秋田県", "宮城県"], ["鹿児島", "長崎県", "熊本県", "福岡県", "宮崎県"] ] Prefecture_list = list(enumerate(Prefecture, 2)) Touhoku_list = list(enumerate(Prefecture[1], 3)) print("・インデックスをずらして県名とインデックスを取得") print(Prefecture_list) print("・インデックスをずらして東北の県名とインデックスを取得") print(Touhoku_list) |
出力結果
・インデックスをずらして県名とインデックスを取得
[(2, [‘北海道’]), (3, [‘青森県’, ‘岩手県’, ‘秋田県’, ‘宮城県’]), (4, [‘鹿児島’, ‘長崎県’, ‘熊本県’, ‘福岡県’, ‘宮崎県’])]
・インデックスをずらして東北の県名とインデックスを取得
[(3, ‘青森県’), (4, ‘岩手県’), (5, ‘秋田県’), (6, ‘宮城県’)]
このようにインデックスをずらして二次元リストの要素をインデックスとまとめて取得することができます。
続いて、三次元リストの要素をインデックスとまとめて取得してみます。
三次元リストの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Prefecture = [ [["北海道" ], ["青森県", "岩手県", "秋田県", "宮城県", "新潟県", "福島県"]], [["鹿児島", "長崎県", "熊本県", "福岡県", "宮崎県", "佐賀県", "大分県"], ["沖縄県"]] ] PrefectureAll_list = list(enumerate(Prefecture, 9)) Prefecture_list = list(enumerate(Prefecture[1], 99)) Kyusyu_list = list(enumerate(Prefecture[1][0], 999)) print("・インデックスをずらして県名とインデックスを取得") print(PrefectureAll_list) print("・インデックスをずらして九州と沖縄の県名とインデックスを取得") print(Prefecture_list) print("・インデックスをずらして九州の県名とインデックスを取得") print(Kyusyu_list) |
出力結果
・インデックスをずらして県名とインデックスを取得
[(9, [[‘北海道’], [‘青森県’, ‘岩手県’, ‘秋田県’, ‘宮城県’, ‘新潟県’, ‘福島県’]]), (10, [[‘鹿児島’, ‘長崎県’, ‘熊本県’, ‘福岡県’, ‘宮崎県’, ‘佐賀県’, ‘大分県’], [‘沖縄県’]])]
・インデックスをずらして九州と沖縄の県名とインデックスを取得
[(99, [‘鹿児島’, ‘長崎県’, ‘熊本県’, ‘福岡県’, ‘宮崎県’, ‘佐賀県’, ‘大分県’]), (100, [‘沖縄県’])]
・インデックスをずらして九州の県名とインデックスを取得
[(999, ‘鹿児島’), (1000, ‘長崎県’), (1001, ‘熊本県’), (1002, ‘福岡県’), (1003, ‘宮崎県’), (1004, ‘佐賀県’), (1005, ‘大分県’)]
このようにインデックスをずらして三次元リストの要素をインデックスとまとめて取得することができます。
enumerate()とfor文と組み合わせてリストの要素とインデックスを取得する方法
enumerate()はfor文と組み合わせることでもリストの要素とインデックスの取得が可能になります。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
human1 = ['山田', '鈴木', '木本'] for i in enumerate(human1, 1): print(i) old = (20, 30, 40) for j in enumerate(old, 1): print(j) human2 = [('山田', 20), ('鈴木', 30), ('木本', 40)] for ind, val in enumerate(human2, 1): name = val[0] age = val[1] print("インデックスは", ind, "名前は", name, "年齢は", age) |
出力結果
(1, ‘山田’)
(2, ‘鈴木’)
(3, ‘木本’)
(1, 20)
(2, 30)
(3, 40)
インデックスは 1 名前は 山田 年齢は 20
インデックスは 2 名前は 鈴木 年齢は 30
インデックスは 3 名前は 木本 年齢は 40
for文と組み合わせることで、リストの要素とインデックスを取り出しています。
Pythonのfor文とenumerate()を組み合わせて使用する方法について詳しく知りたい場合はこちらをご参考ください。
enumerate()で文字列の文字とインデックスを取得する方法
enumerate()のパラメータに文字列を指定することで、文字列の文字とインデックスを取得することができます。
enumerate()を使用する場合
1 2 3 |
string = "HelloWorld" string_list = list(enumerate(string)) print(string_list) |
出力結果
[(0, ‘H’), (1, ‘e’), (2, ‘l’), (3, ‘l’), (4, ‘o’), (5, ‘W’), (6, ‘o’), (7, ‘r’), (8, ‘l’), (9, ‘d’)]
enumerate()のパラメータに文字列を指定することで、インデックスごとに文字列の文字を取得することができます。
また、enumerate()とfor文と組み合わせて使用することでも、文字列の文字とインデックスを取得することができます。
enumerate()とfor文を使用する場合
1 2 3 |
string = "HelloWorld" for ind, ch in enumerate(string): print("インデックスは", ind, "文字は", ch) |
出力結果
インデックスは 0 文字は H
インデックスは 1 文字は e
インデックスは 2 文字は l
インデックスは 3 文字は l
インデックスは 4 文字は o
インデックスは 5 文字は W
インデックスは 6 文字は o
インデックスは 7 文字は r
インデックスは 8 文字は l
インデックスは 9 文字は d
for文と組み合わせることで、文字列から文字とインデックスを取り出すようになります。
今回のポイント
enumerate()でリストの要素とインデックスを取得
⚫︎ Pythonでリストの要素とインデックスを取得するにはenumerate()関数を使用する
⚫︎ enumerate()でリストとインデックスを取得する場合はenumerate()のパラメータにリストを指定する
⚫︎ 多次元リストとインデックスを取得する場合はenumerate()のパラメータに多次元リストを指定する
⚫︎ インデックスをずらしてリストを取得する場合はenumerate()でのパラメータに開始値を指定する
⚫︎ enumerate()のパラメータに文字列を指定すると文字とインデックスを取得することができる
⚫︎ enumerate()とfor文と組み合わせてリストとインデックスを取得することができる
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。