Используя понимание списка, вставьте возрастающее целое число в список списков, которые содержат строки - PullRequest
0 голосов
/ 02 октября 2018

Как я могу превратить этот цикл for в понимание списка?

in:

docs = [['a'], ['b']]
i=0
for each in docs:
    print(each.insert(0, str(i)))
    i+=1
print(docs)

out:

[['0', 'a'], ['1', 'b']]

1 Ответ

0 голосов
/ 02 октября 2018

Это зависит от того, хотите ли вы новый список или измените старый список:

  • [l.insert (0, str (i)) для i, l в перечислении (docs)]
  • [l.insert (0, str (i)) или l для i, l в перечислении (docs)]
  • [[str (i)] + docs [i] для i вrange (len (docs))] *

Это приведет к изменению старого списка, но только в качестве побочного эффекта возвращаемый список неверен:

>>> x = [['a'],['b']]
>>> [ l.insert(0,str(i)) for i,l in enumerate(x)]
[None, None]
>>> x
[['0', 'a'], ['1', 'b']]

Это можетбыть исправлено:

>>> x = [['a'],['b']]
>>> [ l.insert(0,str(i)) or l for i,l in enumerate(x)]
[['0', 'a'], ['1', 'b']]
>>> x
[['0', 'a'], ['1', 'b']]
>>>

или можно создать новый список без изменения старого списка:

>>> y = [['a'],['b']]
>>> [ [str(i)]+y[i] for i in range(len(y))]
[['0', 'a'], ['1', 'b']]
>>> y
[['a'], ['b']]
...