2016-09-13 5 views
2

У меня есть что-то вроде следующего списка списков:индекс каждого элемента в списке списков

>>> mylist=[['A','B','C'],['D','E'],['F','G','H']] 

Я хочу построить новый список списков, где каждый элемент кортежа, где первое значение указывает индекс этого элемента в его подсписке, а второе значение - исходное значение.

я могу получить это, используя следующий код:

>>> final_list=[] 
>>> for sublist in mylist: 
...  slist=[] 
...  for i,element in enumerate(sublist): 
...   slist.append((i,element)) 
...  final_list.append(slist) 
... 
>>> 
>>> final_list 
[[(0, 'A'), (1, 'B'), (2, 'C')], [(0, 'D'), (1, 'E')], [(0, 'F'), (1, 'G'), (2, 'H')]] 
>>> 

Есть ли лучше или более краткий способ сделать это, используя список понимание?

+0

Это _might_ быть лучше подходят для просмотра кода: http://codereview.stackexchange.com/ –

ответ

10
final_list = [list(enumerate(l)) for l in mylist] 
+3

Почему просто не делать 'список (перечисления (л))' вместо внутреннего понимания? –

+0

@StefanPochmann Вы правы. Исправлен ответ. –

Смежные вопросы