Разделить список на N частей

Beginner

This tutorial is from open-source community. Access the source code

Введение

В Python мы можем разбить список на более мелкие списки равного размера с использованием простой функции. Это может быть полезно, когда мы хотим обрабатывать большие объемы данных по меньшим частям. В этом испытании вам будет предложено написать функцию, которая принимает список и целое число n в качестве входных данных и возвращает список из n более мелких списков, каждый из которых содержит равное количество элементов из исходного списка.

Разделить список на N частей

Напишите функцию на Python под названием chunk_into_n(lst, n), которая принимает список lst и целое число n в качестве входных данных и возвращает список из n более мелких списков, каждый из которых содержит равное количество элементов из исходного списка. Если исходный список нельзя разделить равномерно на n более мелких списков, последняя часть должна содержать оставшиеся элементы.

Для решения этой проблемы вы можете следовать следующим шагам:

  1. Вычислите размер каждой части, разделив длину исходного списка на n и округлив до ближайшего целого числа с использованием функции math.ceil().
  2. Создайте новый список размером n с использованием функций list() и range().
  3. Используйте функцию map(), чтобы сопоставить каждый элемент нового списка с частью исходного списка длиной size.
  4. Верните список более мелких списков.

Ваша функция должна иметь следующую сигнатуру:

def chunk_into_n(lst: list, n: int) -> list:
from math import ceil

def chunk_into_n(lst, n):
  size = ceil(len(lst) / n)
  return list(
    map(lambda x: lst[x * size:x * size + size],
    list(range(n)))
  )
chunk_into_n([1, 2, 3, 4, 5, 6, 7], 4) ## [[1, 2], [3, 4], [5, 6], [7]]

Резюме

В этом испытании вы узнали, как разбить список на более мелкие списки равного размера с использованием Python. Вы также узнали, как использовать функцию math.ceil() для округления до ближайшего целого числа и функцию map(), чтобы применить функцию к каждому элементу списка.