#python #python_3x #list #список
Дано n = 4 l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] Раз N у нас 4, то значит нужно сгруппировать значения в списке по четыре элемента. Т.е. берем со списка первые 4 элемента и кладем их в лист, берем следующие 4 элемента и так далее... В итоге получаем такой новый список r = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] Как это можно реализовать?
Ответы
Ответ 1
Практически решение @strawdog , только зачем удалять, и автоматически получится для не кратного n n = 4 l = [1, 2, 3, 4, 5, 6, 7] r = [l[x:n+x] for x in range(0, len(l), n)] # [[1, 2, 3, 4], [5, 6, 7]]Ответ 2
Самый простой вариант (при котором исходный список будет удален): n = 4 l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] r = [] while l: r.append(l[:n]) del l[:n] print(r) [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] Если исходный список будет не кратен n, то результат будет такой: l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13]]Ответ 3
Разбивает список на более мелкие списки указанного размера. Используйте list() и range() для создания списка нужного размера. Используйте map () в списке и заполните его сращениями данного списка. Наконец, верните использование созданного списка. from math import ceil def chunk(lst, size): return list( map(lambda x: lst[x * size:x * size + size], list(range(0, ceil(len(lst) / size))))) chunk([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 4) [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]Ответ 4
from itertools import islice def chunks_from(size, value): it = iter(value) while True: chunk = list(islice(it, size)) if chunk: yield chunk else: break a = list(chunks_from(4, [1, 2, 3, 4, 5, 6, 7])) print(a) # [[1, 2, 3, 4], [5, 6, 7]]
Комментариев нет:
Отправить комментарий