Как вы можете разбить список на каждые х элементов и добавить эти х элементов в новый список?

У меня есть список из нескольких целых чисел и строк

['-200', ' 0', ' 200', ' 400', ' green', '0', '0', '200', '400', ' yellow', '200', '0', '200', '400', ' red']

Мне трудно разделить список на каждые 5 elements и создать новый список, содержащий всего 5 элементов.

Тем не менее, я не хочу 3 разных списка, я просто хочу один, который меняется каждый раз, когда новые 5 elements проходят.

Ответ 1

Вы хотите что-то вроде:

composite_list = [my_list[x:x+5] for x in range(0, len(my_list),5)]

print (composite_list)

Вывод:

[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']]

Что вы подразумеваете под "новыми" 5 элементами?

Если вы хотите добавить в этот список, вы можете:

composite_list.append(['200', '200', '200', '400', 'bluellow'])

Ответ 2

Вы можете сделать это в одном предложении, например

>>> import math
>>> s = ['-200', ' 0', ' 200', ' 400', ' green', '0', '0', '200', '400', ' yellow', '200', '0', '200', '400', ' red']
>>> [s[5*i:5*i+5] for i in range(0,math.ceil(len(s)/5))]

Тогда выход должен быть:

[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']]

Ответ 3

Я чувствую, что вам нужно будет создать 1 новый список, но если я правильно понял, вам нужен вложенный список с 5 элементами в каждом подсписке.

Вы можете попробовать следующее:

l = ['-200', ' 0', ' 200', ' 400', ' green', '0', '0', '200', '400', ' yellow', '200', '0', '200', '400', ' red']

new = []
for i in range(0, len(l), 5):
    new.append(l[i : i+5])

Это приведет к тому, что ваш первый список "l" и элементы группы 5 будут объединены в подсписку в новом. Вывод:

[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']]

Надеюсь это поможет