Как разделить список на части python
Перейти к содержимому

Как разделить список на части python

  • автор:

Python: разбить список на список списков, по элементу-разделителю

Python 3.2. Есть список lst , в котором есть значения вперемешку с элементами-разделителями. Например, [«spam», «ham», None, «eggs», None, None, «bacon»] . Хочу получить список списков, разбив lst по разделителю sep = None , т.е., получить [[«spam», «ham»], [«eggs»], [«bacon»]] . Полистал стандартную библиотеку, но ничего похожего не нашел. На PyPi искать сложно, быстрый пробег тоже ничего не дал. Наглая попытка проэксплуатировать str.split , разумеется, провалилась с TypeError . Посоветуйте, пожалуйста, более красивое решение, чем вот этот вырвиглазный монстр. Не хочу ощущать себя Франкенштейном.

from functools import reduce # Fugly. def split_on(sep, lst): """ Given an iterable `lst`, split it into iterable of lists by `sep`. >>> list(split_on(0, [1, 2, 3, 0, 4, 5, 0, 0, 6])) [[1, 2, 3], [4, 5], [6]] """ s = sep if hasattr(sep, "__call__") else lambda x: x == sep return filter(lambda sublist: len(sublist) > 0, reduce(lambda x, elem: x + [[]] if elem == sep else x[:-1] + [x[-1] + [elem]], lst, [[]])) 

Отслеживать

49.3k 17 17 золотых знаков 57 57 серебряных знаков 101 101 бронзовый знак

Разделение списка на части

Здравствуйте, как мне разделить вложенный список на примерно равные части? Допустим есть list = [[document0],[document1],[document2],[document3],[document4],[document5],[document6]] Таких вложенных документов может быть около 20000. В итоге нужно получить

part0 = [[document0],[document1]] part1 = [[document2],[document3]] part2 = [[document4],[document5],[document6]] 

Отслеживать
задан 7 апр 2018 в 18:16
518 1 1 золотой знак 6 6 серебряных знаков 19 19 бронзовых знаков
В чём логика разбиения? Почему в первых двух по два элемента, а в последнем три?
7 апр 2018 в 18:25

Вы понимаете, что если список из 20 000 элементов разбить на списки по два элемента и присвоить разным переменным,то получится 10 000 переменных? Вы действительно этого хотите?

7 апр 2018 в 18:54

@SergeyGornostaev, в списке около 25000 вложенных списков, каждый вложенный список — текстовый файл с набором терминов. Мне нужно провести некоторые преобразования в списке, но т.к данных ооооочень много, то просто напросто не хватает памяти для выполнения операций. И единственное что пришло в голову это разбить список на части, провести вычисления, а потом снова его склеить

7 апр 2018 в 20:10

@Midnight, укажите в вопросе что из себя представляют document0 и т.д. Если вы просто распределите те же данные по отдельным, памяти данные меньше занимать не будут. Если там действительно содержимое каких-то файлов, просто не грузите все файлы в память сразу, а обрабатывайте постепенно.

Как разделить список в Python: полезные инструкции и советы

Чтобы разделить список в Python, можно использовать методы «split()», «slice» или «list comprehension». 1. Метод «split()» позволяет разделить строку на элементы в списке по заданному разделителю. Пример:

 string = "Яблоко Груша Банан" fruits = string.split() print(fruits) # ['Яблоко', 'Груша', 'Банан'] 

2. Метод «slice» позволяет выбирать определенные части списка по индексам. Пример:

 numbers = [1, 2, 3, 4, 5] sliced_numbers = numbers[2:4] print(sliced_numbers) # [3, 4] 

3. «List comprehension» позволяет создавать новый список, выбирая или изменяя элементы существующего списка. Пример:

 numbers = [1, 2, 3, 4, 5] new_numbers = [n * 2 for n in numbers if n % 2 == 0] print(new_numbers) # [4, 8] 

Детальный ответ

Как разделить список в Python

Разделение списка в Python — это процесс разделения одного списка на несколько подсписков в соответствии с определенными условиями. В этой статье мы рассмотрим несколько способов разделения списка в Python с помощью примеров кода.

1. Разделение списка по размеру подсписка

Если вам нужно разделить список на подсписки определенного размера, вы можете использовать генератор списков и функцию range() для создания подсписков заданного размера. Вот пример кода:

 my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] sublist_size = 3 sublists = [my_list[i:i+sublist_size] for i in range(0, len(my_list), sublist_size)] print(sublists) 

В этом примере мы создаем список my_list , содержащий числа от 1 до 10. Затем мы определяем размер подсписка равным 3. С помощью генератора списков и функции range() мы разбиваем список на подсписки размером 3. В результате получаем список подсписков sublists .

2. Разделение списка по условию

Если вам нужно разделить список на подсписки на основе определенного условия, вы можете использовать цикл for для прохода по всем элементам списка и проверку условия для каждого элемента. Вот пример кода:

 my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] condition = lambda x: x % 2 == 0 sublists = [] current_sublist = [] for item in my_list: if condition(item): current_sublist.append(item) else: if current_sublist: sublists.append(current_sublist) current_sublist = [] if current_sublist: sublists.append(current_sublist) print(sublists) 

В этом примере мы определяем список my_list , содержащий числа от 1 до 10. Затем мы определяем условие с помощью лямбда-функции, которое проверяет, является ли число четным. Далее мы создаем пустой список sublists и переменную current_sublist , которая будет содержать текущий подсписок. Затем мы проходим по всем элементам списка и проверяем условие для каждого элемента. Если условие выполняется, мы добавляем элемент в текущий подсписок. Если условие не выполняется, мы проверяем, является ли текущий подсписок непустым. Если да, мы добавляем его в список подсписков sublists и создаем новый пустой подсписок current_sublist . В конце проверяем, является ли текущий подсписок непустым и добавляем его в список подсписков, если да.

3. Разделение списка на равные подсписки

Если вам нужно разделить список на равные подсписки, вы можете использовать функцию numpy.array_split() из библиотеки NumPy. Вот пример кода:

 import numpy as np my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] num_sublists = 3 sublists = np.array_split(my_list, num_sublists) print(sublists) 

В этом примере мы импортируем библиотеку NumPy и определяем список my_list , содержащий числа от 1 до 10. Затем мы определяем количество подсписков равным 3. С помощью функции numpy.array_split() мы разбиваем список на равные по размеру подсписки. В результате получаем список подсписков sublists .

Заключение

В статье мы рассмотрели несколько способов разделения списка в Python с помощью примеров кода. Вы можете выбрать подходящий метод в зависимости от ваших конкретных потребностей. Надеюсь, эта статья была полезной для вас!

�� Python: как разделить список на части

Python: Чтобы разделить список на части, вы можете воспользоваться срезами (slices) в Python. С помощью срезов вы можете выбирать определенные элементы из списка. Для разделения списка на равные части, вы можете использовать цикл и срезы с определенным шагом. Вот пример кода:

 # Исходный список список = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Размер каждой части размер_части = 3 # Разбивка списка на части части = [список[i:i+размер_части] for i in range(0, len(список), размер_части)] # Вывод результатов for часть in части: print(часть) 

В данном примере исходный список [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] разбивается на части размером 3. Выводится список разделенных частей: [1, 2, 3], [4, 5, 6], [7, 8, 9], [10].

Детальный ответ

Неупорядоченные списки — одна из основных структур данных в Python. Обычно нам бывает необходимо разделить список на несколько частей, чтобы упростить его обработку или выполнить какую-либо операцию над каждой частью отдельно. В этой статье мы рассмотрим различные способы разделения списка на части в Python. ## Использование срезов (Slice) В Python мы можем использовать синтаксис среза (slice) для получения подсписков из исходного списка. Синтаксис среза выглядит следующим образом: `список[начало:конец:шаг]`. Давайте рассмотрим его в действии: «`python исходный_список = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] подсписок = исходный_список[2:7] print(подсписок) «` **Вывод:** «`python [3, 4, 5, 6, 7] «` В приведенном выше примере мы получаем подсписок, начинающийся с элемента с индексом 2 и заканчивающийся элементом с индексом 6 (не включая его). Мы также можем указать шаг разделения с помощью третьего параметра. ## Использование генераторов списков (List comprehension) Генераторы списков — мощный инструмент в Python, позволяющий создавать новые списки на основе существующих. Мы можем использовать генераторы списков для разделения списка на части. Давайте посмотрим на пример: «`python исходный_список = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] размер_части = 4 подсписки = [исходный_список[i:i+размер_части] for i in range(0, len(исходный_список), размер_части)] print(подсписки) «` **Вывод:** «`python [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]] «` В этом примере мы используем генератор списка для создания нового списка подсписков. Мы итерируемся по исходному списку, берем подсписок размером `размер_части` и добавляем его в новый список `подсписки`. ## Использование функции разделения Мы также можем определить собственную функцию, которая будет разделять список на части. Вот пример простой функции разделения списка: «`python def разделить_список(исходный_список, размер_части): подсписки = [] for i in range(0, len(исходный_список), размер_части): подсписки.append(исходный_список[i:i+размер_части]) return подсписки исходный_список = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] размер_части = 3 подсписки = разделить_список(исходный_список, размер_части) print(подсписки) «` **Вывод:** «`python [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]] «` В этом примере мы определяем функцию `разделить_список`, которая принимает два аргумента: `исходный_список` и `размер_части`. Функция итерируется по `исходный_список`, режет его на подсписки указанного размера и добавляет полученные подсписки в новый список `подсписки`. Затем функция возвращает этот список. ## Использование модуля `itertools` Модуль `itertools` предлагает полезные инструменты для работы с итераторами в Python. Мы можем использовать функцию `islice` из этого модуля для разделения списка на части. Пример: «`python from itertools import islice исходный_список = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] размер_части = 4 подсписки = [list(islice(исходный_список, i, i+размер_части)) for i in range(0, len(исходный_список), размер_части)] print(подсписки) «` **Вывод:** «`python [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]] «` В приведенном примере мы используем функцию `islice`, чтобы получить подсписки заданного размера из `исходный_список`. Мы определяем генератор списка, который проходит по индексам исходного списка и создает подсписки с помощью `islice`. ## Заключение В этой статье мы рассмотрели несколько способов разделения списка на части в Python. Мы изучили их с использованием срезов (slice), генераторов списков (List comprehension), собственной функции разделения и модуля `itertools`. Теперь у вас есть различные инструменты для работы с большими списками, которые помогут вам упростить их обработку и выполнить нужные операции.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *