Как получить все итерации списка списков? - PullRequest
1 голос
/ 07 февраля 2020

Допустим, у меня есть список:

a = [[1,2], [3,4,5], [6,7,8,9]]

Я хочу получить все итерации списка следующим образом:

[[1], None, None]
[[1,2], None, None]
[[1,2], [3], None]
[[1,2], [3,4], None]
[[1,2], [3,4,5], None]
[[1,2], [3,4,5], [6]]
[[1,2], [3,4,5], [6,7]]
[[1,2], [3,4,5], [6,7,8]]
[[1,2], [3,4,5], [6,7,8,9]]

С окончательным результатом будет список этих итераций:

result = [[[1], None, None], [[1,2], None, None], ... , [[1,2], [3,4,5], [6,7,8,9]]]

1 Ответ

0 голосов
/ 07 февраля 2020

Вы можете использовать понимание списка:

a = [[1,2], [3,4,5], [6,7,8,9]]
new_a = [a[:i]+[b[:k]]+[None]*(len(a)-i-1) for i, b in enumerate(a) for k in range(len(b)+1) if b[:k]]

Вывод:

[[[1], None, None], 
 [[1, 2], None, None], 
 [[1, 2], [3], None], 
 [[1, 2], [3, 4], None], 
 [[1, 2], [3, 4, 5], None], 
 [[1, 2], [3, 4, 5], [6]], 
 [[1, 2], [3, 4, 5], [6, 7]], 
 [[1, 2], [3, 4, 5], [6, 7, 8]], 
 [[1, 2], [3, 4, 5], [6, 7, 8, 9]]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...