Когда мне нужно добавить несколько одинаковых элементов в списке, я использую list.extend:list.extend и список понимание
a = ['a', 'b', 'c']
a.extend(['d']*3)
Результат
['a', 'b', 'c', 'd', 'd', 'd']
Но, как сделать подобное со списком понимание?
a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
Результат
[['a', 'a'], ['b', 'b'], ['c']]
Но мне нужен этот один
['a', 'a', 'b', 'b', 'c']
Любые идеи?
Спасибо! Это работает, но я даже не понимаю, как читать это выражение. – Stas
'for x in a 'извлекает каждый из элементов' a' по одному за раз в 'x'. 'for y in ...' создает новый список из 'x' и извлекает его элементы по одному в' y'. Все это происходит в одно и то же время (более или менее), заставляя все это находиться на одном уровне гнездования. –
Как правило, с распаковкой обычно яснее: [y for (item, times) in a for y in [item] * times] – tokland