Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.10.2021
Сообщений: 2

Взять список из списка списков

25.10.2021, 01:04. Показов 1015. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Требуется разделить список на заданное количество частей. Для дальнейшей передачи части списка в виде аргумента для выполнения функции на заданном ядре.

Для 4 ядерного компьютера из списка
lst = [x for x in range(1,16)]
Надо получить список
[1,2,3,4] для первого ядра
[5,6,7,8] для второго ядра
[9,10,11,12] для третьего ядра
[13,14,15] для четвертого ядра

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

lst = [x for x in range(1,16)]
parts = multiprocessing.cpu_count()
parting(lst,parts)

Вывод: [[1,2,3,4], [5,6,7,8][9,10,11,12][13,14,15]]

Вопрос в том каким образом мне взять отдельно каждый из списков, не указывая его диапазон в ручную. Рассматриваю вариант генерации новых переменных.
lst1 = [1,2,3,4]
lst2
lst3
lst4
Но думаю что есть варианты реализации гораздо проще и логичнее, для этого сюда и обратился. Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2021, 01:04
Ответы с готовыми решениями:

На основе этих списков поочередной вставкой элементов из первого и второго списка формируется новый список
Напишите программу, в которой создается два списка одинакового размера. На основе этих списков поочередной вставкой элементов из первого...

Преобразование списка в список списков
Всем привет, допустим, существует список l= на выходе должен получится список списков m = , , , ] подскажите, пожалуйста, как...

По значениям списка создать новый список (с генератором списков)
По значениям списка (назовем его X) создать новый список Y с помощью генератора списков. Y должен состоять из следующих значений:Неравные...

2
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
25.10.2021, 07:49
Цитата Сообщение от SprootGeryndi Посмотреть сообщение
lst = [x for x in range(1,16)]
list(range(1,16))

Цитата Сообщение от SprootGeryndi Посмотреть сообщение
Вопрос в том каким образом мне взять отдельно каждый из списков, не указывая его диапазон в ручную.
в цикле и двигая счетчик по 4, нет? можно даже не хардкодить 4,а передавать в функцию цпу_каунт, чтобы динамически делил.
1
0 / 0 / 0
Регистрация: 25.10.2021
Сообщений: 2
25.10.2021, 21:45  [ТС]
import multiprocessing

lst = list(range(500))

def function1(i):
----for x in range(1, i):
--------for y in range(1, i):
------------x**y

def call_function(lst1):

----for i in lst1:
--------function1(i)


def parting_cores (core_number, proc):

----lst1 = []

----lst1.append(lst[core_number: len(lst)+1:cores])

----return(lst1)


if __name__ == "__main__":

----processes = []

----cores = multiprocessing.cpu_count()

----for x in range(cores):
--------p = multiprocessing.Process(target=call_func tion, args=(parting_cores(x, cores)))
--------processes.append(p)
--------p.start()


----for x in processes:
--------p.join()






Спасибо за ваш ответ, решил подобным методом. Описание идет снизу вверх. Циклом создаем количество процессов, равное количеству ядер. В виде аргумента для заданной функции, подставляется функция, равномерно распределяющая значения массива для каждого ядра с помощью среза изначального списка, начинающегося с индекса списка, равному ядру, и шагом, равным количеству ядер. Таким образом каждое ядро получает максимально равный объем работы, так как полученный список идет не по порядку, а берется равномерная выборка значений для каждого ядра от начала и до конца массива. Call_function и function1 в данном случае просто тяжелая задача в качестве примера работы. Хардкода удалось избежать. Выполнение данного алгоритма на 1 ядре занимает 298секунд, на 8 ядрах 48 секунд.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.10.2021, 21:45
Помогаю со студенческими работами здесь

Из элементов списка А, состоящего из 25 целых чисел, сформировать список из 5 списков
Напишите пожалуйста программу по этой задаче Из элементов списка А, состоящего из 25 целых чисел, сформировать список из 5 списков,...

Имеется список списков целых чисел. Написать функцию для создания списка из длин списков исходного списка
Помогите пожалуйста, никак не могу найти информацию как это возможно реализовать, в вузе попалось такое задание, а теории катастрофически...

Получить из списка - список списков
Всем добрый день. Подскажите пожалуйста мне необходимо реализовать следующее: на входе строка вида...

Проверка вхождения элементов списка в список списков
Привет. Есть список списков ,,,] и есть обычный список . Надо проверить проверить вхождения списка в список списков (для 1,2,4 списка...

Из данного одноуровнего списка построить список списков его элементов
Напишите функцию, которая из данного одноуровнего списка строит список списков его элементов, например, (a b) -> ((a) (b)). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru