Разделите список на более мелкие списки, где каждый меньший список впоследствии будет меньше, используя понимание списка

1

У меня есть список, который я хотел бы разбить на список списков, так что каждый список в новом списке будет на один элемент меньше.

Например:

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

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

Есть ли простой способ сделать это через понимание списка?

Теги:
python-2.7
split
list-comprehension

2 ответа

5
Лучший ответ

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

>>> [exampleList[i:] for i in range(len(exampleList) - 1)] 
[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [2, 3, 4, 5, 6, 7, 8, 9, 10], [3, 4, 5, 6, 7, 8, 9, 10], [4, 5, 6, 7, 8, 9, 10], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10], [7, 8, 9, 10], [8, 9, 10], [9, 10]]

exampleList[i:] будет принимать все элементы из текущего индекса i до конца. Если вы хотите включить [10] в результат, опустите- - 1 из вызова len.

  • 0
    Можно ли перечислять правильно, а правильно?
0

Пойдите с решением @timgeb, альтернативная версия может быть

res = [lst[i:] for i, _ in enumerate(lst[:-1])]

Другая возможность использования map

res = list(map(lambda x: lst[x-1:], lst[:-1]))
# [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [2, 3, 4, 5, 6, 7, 8, 9, 10], [3, 4, 5, 6, 7, 8, 9, 10], [4, 5, 6, 7, 8, 9, 10], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10], [7, 8, 9, 10], [8, 9, 10], [9, 10]]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню