1. ホーム
  2. python

[解決済み] リスト内包でenumerateを使用するPython

2022-06-14 19:53:12

質問

このようなリストがあるとします。

mylist = ["a","b","c","d"]

インデックスと一緒に値を表示させるには、Pythonの enumerate 関数を使うことができます。

>>> for i,j in enumerate(mylist):
...     print i,j
...
0 a
1 b
2 c
3 d
>>>

さて、これを list comprehension の中で使おうとすると、このようなエラーになります。

>>> [i,j for i,j in enumerate(mylist)]
  File "<stdin>", line 1
    [i,j for i,j in enumerate(mylist)]
           ^
SyntaxError: invalid syntax

そこで質問なのですが、リスト内包の中でenumerateを使用する正しい方法は何でしょうか?

どのように解決するのですか?

これを試してみてください。

[(i, j) for i, j in enumerate(mylist)]

には i,j をタプルの中に入れる必要があります。あるいは、与えられた enumerate() すでに がタプルを返す場合、最初にそれを解凍せずに直接返すことができます。

[pair for pair in enumerate(mylist)]

いずれにせよ、返される結果は予想通りです。

> [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]