Чтобы быть действительно ясным, это не имеет никакого отношения к enumerate
и ко всему, что относится к синтаксису понимания списка.
Это понимание списка возвращает список кортежей:
[(i,j) for i in range(3) for j in 'abc']
это список dicts:
[{i:j} for i in range(3) for j in 'abc']
список списков:
[[i,j] for i in range(3) for j in 'abc']
синтаксическая ошибка:
[i,j for i in range(3) for j in 'abc']
Что (IMHO) и путают с синтаксисом понятий словаря:
>>> {i:j for i,j in enumerate('abcdef')}
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f'}
И набор кортежей:
>>> {(i,j) for i,j in enumerate('abcdef')}
set([(0, 'a'), (4, 'e'), (1, 'b'), (2, 'c'), (5, 'f'), (3, 'd')])
Как заявил Оскар Лопес, вы можете просто передать нумерацию кортежа напрямую :
>>> [t for t in enumerate('abcdef') ]
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f')]