Более быстрый способ суммировать список чисел, чем с помощью цикла for? - PullRequest
10 голосов
/ 12 мая 2009

Есть ли способ суммировать список чисел быстрее, чем с помощью цикла for, возможно, в библиотеке Python? Или это действительно что-то, что может эффективно выполнять только многопоточность / векторная обработка?

Редактировать: просто чтобы уточнить, это может быть список любых чисел, не отсортированных, просто ввод от пользователя.

Ответы [ 5 ]

32 голосов
/ 12 мая 2009

Вы можете использовать sum () для суммирования значений массива.

a = [1,9,12]
print sum(a)
5 голосов
/ 12 мая 2009

Еще один способ суммировать список со временем цикла:

    s = reduce(lambda x, y: x + y, l)
2 голосов
/ 12 мая 2009

Если каждый член в списке просто увеличивается на 1 или если вы можете найти шаблон в ряду, вы можете найти формулу для суммирования n членов. Например, сумма ряда {1,2,3, ..., n} = n (n + 1) / 2

Подробнее здесь

1 голос
/ 12 мая 2009

Ну, я не знаю, быстрее ли это, но вы можете попробовать небольшое исчисление, чтобы сделать это одной операцией. (N * (N + 1)) / 2 дает вам сумму каждого числа от 1 до N, и есть другие формулы для решения более сложных сумм.

0 голосов
/ 12 мая 2009

Для общего списка вы должны хотя бы один раз просмотреть каждого члена хотя бы один раз, чтобы получить сумму, что и делает цикл for. Использовать библиотечные API (например, sum) удобнее, но я сомневаюсь, что на самом деле это будет быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...