Sum: примеры (PYTHON)
sum(iterable[, start]): AnyФункция sum() в Python предназначена для вычисления суммы элементов итерируемого объекта. Её основное применение - суммирование числовых значений в последовательностях, таких как списки, кортежи или множества.
Аргументы и возвращаемое значение
Функция принимает два параметра:
- iterable - обязательный аргумент, представляющий итерируемый объект, содержащий элементы для суммирования (например, список, кортеж, диапазон). Элементы должны быть числами (целыми или с плавающей запятой).
- start - необязательный аргумент, определяющий начальное значение суммы. По умолчанию равен 0. Параметр может быть целым или вещественным числом.
Возвращаемое значение - сумма всех элементов итерируемого объекта, сложенная со значением start. Если итерируемый объект пуст, функция возвращает значение start.
Короткие примеры использования
Суммирование целых чисел в списке:
numbers = [1, 2, 3, 4, 5]
result = sum(numbers)
print(result)15
Использование начального значения:
numbers = [10, 20, 30]
result = sum(numbers, 100)
print(result)160
Суммирование чисел с плавающей запятой:
values = [1.5, 2.3, 0.7]
result = sum(values)
print(result)4.5
Работа с пустым итерируемым объектом:
empty_list = []
result = sum(empty_list, 10)
print(result)10
Похожие функции в Python
- math.fsum() - обеспечивает более точное суммирование чисел с плавающей запятую, уменьшая ошибки округления. Рекомендуется для финансовых или научных расчётов, где важна точность.
- numpy.sum() - функция из библиотеки NumPy, оптимизированная для работы с многомерными массивами. Поддерживает дополнительные параметры, такие как ось суммирования и тип данных. Используется при обработке больших наборов данных.
- reduce() из functools - применяет операцию сложения ко всем элементам последовательности. Более гибкая, но менее читаемая по сравнению с sum(). Применяется для реализации сложных агрегаций.
Аналоги функции в других языках
PHP: Функция array_sum() работает только с массивами.
$numbers = [1, 2, 3];
echo array_sum($numbers);6
JavaScript: Отсутствует встроенная функция, используется reduce().
const numbers = [1, 2, 3];
const sum = numbers.reduce((a, b) => a + b, 0);
console.log(sum);6
Java: Суммирование через цикл или Stream API.
import java.util.Arrays;
int[] numbers = {1, 2, 3};
int sum = Arrays.stream(numbers).sum();
System.out.println(sum);6
SQL: Агрегатная функция SUM() применяется к столбцам таблиц.
SELECT SUM(price) FROM products;C#: Метод Sum() из пространства имён System.Linq.
int[] numbers = {1, 2, 3};
int sum = numbers.Sum();
Console.WriteLine(sum);6
Lua: Отсутствует встроенная функция, реализуется циклом.
Go: Нет готовой функции, суммирование выполняется в цикле.
Kotlin: Метод sum() доступен для коллекций чисел.
val numbers = listOf(1, 2, 3)
val sum = numbers.sum()
println(sum)6
Типичные ошибки
Попытка суммирования нечисловых элементов вызывает TypeError.
data = ['a', 'b', 'c']
result = sum(data)TypeError: unsupported operand type(s) for +: 'int' and 'str'
Неявное игнорирование начального значения при работе со строками через sum() не поддерживается. Для конкатенации строк используется join().
words = ['Hello', 'World']
# Неправильно: sum(words, '')
result = ''.join(words)
print(result)HelloWorld
Суммирование разных типов чисел работает корректно, но результат может быть неожиданным из-за преобразований типов.
mixed = [1, 2.5, 3]
result = sum(mixed)
print(result)6.5
Изменения в последних версиях Python
В Python 3.8 была добавлена поддержка параметра start для встроенной функции sum() в соответствии с её исходным описанием. Ранее некоторые реализации могли неявно игнорировать этот аргумент. В версии 3.12 оптимизирована производительность для суммирования целых чисел и чисел с плавающей запятой.
Расширенные примеры использования
Суммирование чисел в генераторе для экономии памяти:
squares_sum = sum(x**2 for x in range(1, 6))
print(squares_sum)55
Использование начального значения для конкатенации списков:
lists = [[1, 2], [3, 4], [5, 6]]
result = sum(lists, [])
print(result)[1, 2, 3, 4, 5, 6]
Суммирование только положительных чисел:
numbers = [5, -3, 10, -1, 8]
result = sum(x for x in numbers if x > 0)
print(result)23
Работа с decimal для точных расчётов:
from decimal import Decimal
values = [Decimal('10.5'), Decimal('20.3'), Decimal('30.7')]
result = sum(values)
print(result)61.5
Суммирование атрибутов объектов:
class Item:
def __init__(self, price):
self.price = price
items = [Item(100), Item(200), Item(300)]
total = sum(item.price for item in items)
print(total)600
Комбинирование sum() с map():
numbers = ['10', '20', '30']
result = sum(map(int, numbers))
print(result)60