Реализация разделения списка в вашем коде
Теперь, когда вы понимаете концепцию разделения списка и способ определения оптимального размера части, давайте рассмотрим детали реализации.
Использование встроенной функции iter()
Один из самых простых способов разделить список на части в Python - использовать встроенную функцию iter()
вместе с нарезкой списка:
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 3
chunks = [chunk for chunk in [my_list[i:i+chunk_size] for i in range(0, len(my_list), chunk_size)]]
print(chunks)
Это выведет:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
Использование ключевого слова yield
В качестве альтернативы вы можете использовать функцию-генератор с ключевым словом yield
для создания частей:
def chunk_list(lst, chunk_size):
for i in range(0, len(lst), chunk_size):
yield lst[i:i+chunk_size]
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 3
chunks = list(chunk_list(my_list, chunk_size))
print(chunks)
Это также выведет:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
Функция-генератор chunk_list()
возвращает каждую часть по одной, что может быть более экономичным по памяти, чем создание всего списка частей сразу.
Обработка неравномерных размеров частей
В некоторых случаях последняя часть может иметь другой размер, особенно если длина исходного списка не делится на размер части без остатка. Вы можете обработать это, проверив длину последней части и соответствующим образом скорректировав размер части:
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
chunk_size = 3
chunks = [my_list[i:i+chunk_size] for i in range(0, len(my_list), chunk_size)]
if len(chunks[-1]) < chunk_size:
chunks[-1] = my_list[-len(chunks[-1]):]
print(chunks)
Это выведет:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]
Корректируя размер последней части, вы можете гарантировать, что все элементы исходного списка будут включены в разделенный на части результат.
Помните, что конкретные детали реализации могут отличаться в зависимости от вашего случая использования и требований вашего приложения. Приведенные здесь примеры должны дать вам прочную основу для начала работы с разделением списков в ваших Python-проектах.