Есть список строк:
list1 = '''1
первое название
2:23
автор такой-то
2
следующее название
1:09
автор сякой-то'''.split('\n')
(Разумеется, строк гораздо больше.) Нужно превратить его в «таблицу»:
[['1', 'первое название', '2:23', 'автор такой-то'],
['2', 'следующее название', '1:09', 'автор сякой-то']]
Желательно список списков, а не список кортежей, чтобы было проще менять элементы. Число строк кратно 4, либо можно отбросить лишние.
Почти сразу нашёл в сети красивое решение:
list2 = list( zip( * [iter(list1)] * 4 ) )
которое даёт именно список кортежей. Можно сделать
list2 = [ list(_) for _ in zip( * [iter(list1)] * 4 ) ]
Но как-то некрасиво.
Более правильные решения есть?
Ответ-однострочник:
list2 = list( map( list, zip( * [iter(list1)] * 4 ) ) )