Как вы можете разбить список на каждые х элементов и добавить эти х элементов в новый список?
У меня есть список из нескольких целых чисел и строк
['-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']]
Надеюсь это поможет