каждый пример, который я видел до сих пор, имеет одинаковое количество элементов в каждом списке,
Это потому, что многие существующие примеры, такие, что он берет элемент из исходного списка, преобразует он (сопоставьте его) и создает новый преобразованный список. У вас также может быть условное понимание списка, которое будет удалять элементы из целевого списка, если не выполняется определенное условие для обрабатываемого элемента. Возможно, вы захотите увидеть мой другой ответ о понимании списка
Следует отметить один момент: «размер» или форма вашего списка не меняется при вводе через простой понимание списка. По крайней мере, вам может потребоваться вложить его. Что-то вроде [[y for y in x] x for x in z]
Но если вы настаиваете на его использовании, вам придется исследовать, используя:
- Chunking (это довольно стандартно; просто введите здесь «chunking python list»)
- Или, чуть более опасный вариант: заархивировать 3 ссылки на один и тот же итератор вместе. ;)
Отвечу на ваш вопрос: не вижу необходимости в понимании списка. Просто добавьте старый простой слайд и список:
newlist = [mylist[:3]] + [mylist[3:]]
print(newlist)
# [[[0, 4, 3, 2, 1], [0, 3, 4, 1], [0, 4, 1]], [[0, 2, 1], [0, 3, 4, 1], [0, 1]]]
.. обратите внимание, что приведенное выше не является общим решением по любому поводу. Скорее всего, вам понадобится один из двух пунктов выше.
Вот несколько более общее решение. Если вы изучаете понимание списка, вам может потребоваться некоторое время, чтобы полностью понять, почему это работает:)
>>> items = list(range(20))
>>> it = iter(items)
>>> items_in_one_chunk = 4
>>> iters = [it] * items_in_one_chunk
>>> [list(x) for x in zip(*iters)]
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19]]