Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 10.11.2021
Сообщений: 16

Сложить элементы из всех списков внутри списка (быстро)

26.01.2022, 16:01. Показов 5220. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Мне нужно очень быстро сложить все элементы из списков внутри списка, процесс выглядит так:

[[[1,2], [3,4,5], [6]], [[7,8], [9], [10]]] --> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

может у библиотеки numpy что-то есть?

Вот мой текущий код:
Python
1
2
3
4
5
6
def sum_list(list_of_lists):
    return_lst = []
    for i in list_of_lists:
        for i2 in i:
            return_lst = return_lst + i2
    return return_lst
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.01.2022, 16:01
Ответы с готовыми решениями:

Заданы несколько списков. Удалить из первого списка все элементы остальных списков
Всем привет, дали такое задание, воспользовался некоторыми кодами в этом форуме, только они не помогли вот один из кодов в форуме,...

условия из двух списков внутри третьего списка
Имеется два списка, необходимо создать третий список из первых двух. Если значения из второго списка меньше числа, то считать по одной...

Заданы три списка. Удалить из первого списка все элементы остальных списков
Помогите пожалуйста, мне нужно сессию досрочно сдать( в роддом надо) а практика только началась, а преподаватель сказал сдать обе задачки...

28
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
04.02.2022, 15:45
Студворк — интернет-сервис помощи студентам
Only User,
Ты в курсе что твоя новая функция возвращает вовсе не схопнутый до одного измерения список?
Code
1
[[1, 2], [3, 4, 5], [6], [7, 8], [9], [10]]
Добавлено через 2 минуты
P.S. Тут нужен extend, а не append.
А extend это тоже самое что и [] + []
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,320
04.02.2022, 16:06
Only User, неверно "считает" - "выведи на печать получившийся результат

Добавлено через 10 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import time
 
def sum_list_old(list_of_lists):
    return_lst = []
    for i in list_of_lists:
        for i2 in i:
            return_lst = return_lst+i2
    return return_lst
 
def sum_list(list_of_lists):
    return_lst = []
    for i in list_of_lists:
        for i2 in i:
            return_lst.extend(i2)
    return return_lst
 
 
 
lst = [[[[1,2], [3,4,5], [6]], [[7,8], [9], [10]]]] # вот такой попробуй
 
lt = time.time()
s = sum_list_old(lst)
print(s)
print("Old",(time.time()-lt)*1000, "мсек.")
 
 
lt = time.time()
s = sum_list(lst)
print(s)
print("New",(time.time()-lt)*1000, "мсек.")
1
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
04.02.2022, 16:15
Gdez,

Что интересно, первый вариант функции ТС действительно работает очень медленно.
Но cтоит заменить строчку
Python
1
return_lst = return_lst + i2
на
Python
1
return_lst+=i2
И все начинает работать как надо. Собственно, как и с extend.
0
Эксперт Python
 Аватар для dondublon
4663 / 2082 / 367
Регистрация: 17.03.2012
Сообщений: 10,203
Записей в блоге: 6
04.02.2022, 16:23
Если глубина вложенности списков одинакова и равна трём, как в примере, то так:
Python
1
2
from itertools import chain
list(chain.from_iterable(chain.from_iterable(itm) for itm in lst))
list(), вооще говоря, необязательно.
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,320
04.02.2022, 16:25
Garry Galler, Похоже из-за того, что предварительно "грузит" сам массив в память...
Но все равно оба кода не до конца "распаковывают" список, если вложенность большая
0
0 / 0 / 0
Регистрация: 10.11.2021
Сообщений: 16
04.02.2022, 16:31  [ТС]
Моя оплошность, не проверил результат
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
04.02.2022, 16:34
Цитата Сообщение от Gdez Посмотреть сообщение
Но все равно оба кода не до конца "распаковывают" список,
Вариант Catstail, подойдет для любой степени вложенности. Но нужно регулировать настройки рекурсии.

flatten из numpy тоже вот только для двумерных работает.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,766
Записей в блоге: 14
04.02.2022, 16:44
Only User, ты, оказывается, с самого начала задачу поставил неправильно. У тебя списки что, всегда двухуровневые? Т.е. вида [[***],[***],[***]]? Если это так, то самое простое вот:

Python
1
2
3
4
from functools import reduce
 
def sum_list_1(lol):
    return reduce(lambda acc,x: acc+x,lol)


Я-то думал, что у тебя список совершенно произвольный...
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,320
04.02.2022, 18:06
Garry Galler,
flatten из numpy тоже вот только для двумерных работает.
numpy.sum() "раворачивает" любую вложенность
P.s. Ошибся
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2022, 18:06

Суммы всех одномерных списков внутри двумерного
Написать функцию sums2d(lst2d: list), которая из двумерного списка будет выдавать одномерный список, содержащий суммы всех одномерных...

Как сложить сумму из чисел сотен списков и узнать количество списков?
Доброго времени суток! Не могу понять как сложить сумму из несколько тысяч списков. Подскажите пожалуйста? В коде удалил из списков все...

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

Как сложить элементы списка?
К примеру имеем список: v={1,2,3,1,1}; Соответственно ответ должен быть равен 8.

Сложить все одинаковые элементы списка
Здравствуйте! есть три массива: name = , price = , number = .Все элементы соответственно расположены относительно друг друга. При...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru