Entendendo a função Sum do Python [With Examples]

Aprenda tudo sobre a função sum() em Python: da sintaxe para usá-la com vários iteráveis—com exemplos de código úteis.

Ao trabalhar com iteráveis ​​do Python, como uma lista de números, uma operação comum é encontrar a soma de todos os elementos da lista. Também encontraremos essas operações ao trabalhar com outros iteráveis, como tuplas e conjuntos.

Isso pode ser feito de algumas maneiras diferentes, mas a maneira Pythonic recomendada é usar a função sum() incorporada.

Aqui, começaremos examinando as outras abordagens, como looping e definição de uma função. Em seguida, aprenderemos a sintaxe da função sum() do Python e exemplos de código para entendê-la melhor.

Somando valores em um Python iterável

📋 Você pode codificar junto em um Python REPL. Ou você pode usar o editor Online Python do etechpt.com.

Considere a seguinte lista de números:

>>> nums = [2,8,5,3,11,7,9]

Nosso objetivo é encontrar a soma de todos os números da lista. Abordaremos a função sum() do Python em breve, mas começaremos com algumas das outras abordagens que podemos adotar. Esses incluem:

  • Usando um loop for simples
  • Usando a função reduce() do módulo functools
  • Definindo uma função personalizada

Usando loops

Para encontrar a soma de todos os elementos em uma lista, podemos usar um loop for da seguinte forma:

  • Inicialize a variável total como zero.
  • Percorra a lista de números e acesse cada número.
  • Adicione o número ao total.
>>> nums = [2,8,5,3,11,7,9]
>>> total = 0
>>> for num in nums:
...     total += num
...
>>> total
45

Usando a Função Reduzir

Outra abordagem para somar iteráveis ​​é usar a função reduce(). A função de redução, incorporada ao módulo functools do Python, recebe uma função e um iterável. E reduz o iterável aplicando sucessivamente a função nos elementos do iterável.

  Como reproduzir arquivos em ordem alfabética ou numérica no VLC Player

Aqui, usamos uma função lambda para definir a adição de dois números e passar a lista nums como o iterável.

>>> nums = [2,8,5,3,11,7,9]
>>> from functools import reduce
>>> total = reduce(lambda n1, n2: n1 + n2, nums)
>>> total
45

A função reduce() funciona adicionando dois números sucessivamente — da esquerda para a direita — até reduzir a um único valor de soma:

Usando uma função personalizada

Também podemos definir uma função personalizada para fazer isso. Aqui, definimos uma função sum_list que:

  • Toma uma lista de números como argumento e
  • Retorna a soma dos elementos em uma lista.

O corpo da função usa a construção de loop que vimos anteriormente. Mas definir uma função nos dá capacidade de reutilização.

>>> def sum_list(some_list):
...     total = 0
...     for num in some_list:
...        total += num
...     return total
...

Chamar a função sum_list() com nums como argumento retorna a soma de 45:

>>> nums = [2,8,5,3,11,7,9]
>>> total = sum_list(nums)
>>> total
45

A seguir, vamos aprender sobre a função interna sum(). Não é apenas conciso, mas também robusto, pois funciona bem com vários iteráveis ​​e tipos de dados.

Sintaxe da função de soma do Python

A sintaxe para usar a função sum() é a seguinte:

sum(iterable, start)

Aqui,

  • iterável é um argumento obrigatório. Pode ser qualquer iterável para o qual a operação de soma é válida, como uma lista ou tuplas de números. Chamar a função sum() com strings Python gera uma exceção TypeError (falaremos mais sobre isso posteriormente).
  • start é um argumento opcional. Muitas vezes, é um valor numérico que é adicionado à soma calculada. Isso pode ser útil quando você precisa adicionar um valor constante ao resultado.

Agora que aprendemos a sintaxe da função sum() do Python, vamos usá-la para somar iteráveis.

  Como corrigir o canal de histórico do Roku não está funcionando

Somar iteráveis ​​com a função Sum

#1. Lista

Vamos encontrar a soma dos números na lista nums usando a função sum():

>>> nums = [2,8,5,3,11,7,9]
>>> sum_1 = sum(nums)
>>> sum_1
45

Usando o valor inicial opcional

Para adicionar um valor constante à soma, podemos usar a função sum() com o valor inicial opcional. Aqui, passamos um valor inicial de 100 como um argumento posicional:

>>> sum_start = sum(nums,100)
>>> sum_start
145

O valor inicial também pode ser especificado como um argumento de palavra-chave:

>>> sum_start = sum(nums,start=10)
>>> sum_start
55

#2. tupla

A função sum() também funciona com tuplas. Criamos uma tupla nums_tuple convertendo a lista de nums em uma tupla:

>>> nums_tuple = tuple(nums)
>>> nums_tuple
(2, 8, 5, 3, 11, 7, 9)
>>> sum_2 = sum(nums_tuple)
>>> sum_2
45

#3. Definir

Também podemos usar a função sum() com um conjunto de números:

>>> nums_set = set(nums)
>>> nums_set
{2, 3, 5, 7, 8, 9, 11}

Aqui, lançamos a lista nums para um conjunto Python e calculamos a soma dos elementos em nums_set.

>>> sum_3 = sum(nums_set)
>>> sum_3
45

#4. Dicionário

Considere o seguinte Student_dict com chaves numéricas. Observe o que acontece quando você chama a função sum() com este dicionário como argumento.

>>> students_dict = {1:106,2:112,3:127}
>>> sum_4 = sum(students_dict)
>>> sum_4
6

A função sum(), por padrão, retorna a soma das chaves.

Somando as Chaves

Sabemos que o comportamento padrão é somar as chaves do dicionário.

No entanto, você pode tornar isso mais explícito usando o método de dicionário keys() para acessar as chaves. E então passe a lista de chaves para a função sum():

>>> sum_keys = sum(students_dict.keys())
>>> sum_keys
6

Somando os Valores

Se você quiser somar os valores do dicionário, acesse os valores chamando o método values() no objeto do dicionário:

>>> sum_vals = sum(students_dict.values())
>>> sum_vals
345

Usando a função Sum do Python com outros tipos de dados numéricos

Até agora, vimos como usar a função sum() com iteráveis ​​de inteiros. Agora vamos ver alguns exemplos com outros tipos de dados numéricos.

Números complexos

A função sum() também pode ser usada para somar números complexos. Neste exemplo, nums_c é uma lista de números complexos:

>>> nums_c = [3 + 4j, 1 + 2j]
>>> sum_c = sum(nums_c)
>>> sum_c
(4+6j)

Números de ponto flutuante

Aqui, usamos a função sum() para somar a lista de números de ponto flutuante nums_f:

>>> nums_f = [1.8,2.5,3.6,7.2]
>>> sum_f = sum(nums_f)
>>> sum_f
15.100000000000001

📑 Para maior precisão no resultado da adição de números de ponto flutuante, você pode usar a função fsum() do módulo math para somar iteráveis ​​com valores de ponto flutuante.

  Por que os fones de ouvido com cancelamento de ruído machucam meus ouvidos?

Achatando com a função de soma

Agora vamos ver como a função sum() pode ser usada para achatar e concatenar iteráveis.

Achatar uma Lista

Suponha que temos uma lista aninhada:

>>> lists = [[2,4,6],[3,5,7]]

Quando chamamos a função sum() passando esta lista aninhada como argumento junto com uma lista vazia como valor inicial:

>>> sum(lists,[])
[2, 4, 6, 3, 5, 7]

Vemos que a lista aninhada foi achatada em uma única lista de números.

Equivalentemente, quando pensamos na lista como sendo l3 = [l1,l2]a função sum() concatena as duas listas l1 e l2 aninhadas na lista l3.

📝Como um exercício rápido, tente usar a função sum() em outros iteráveis ​​aninhados.

Armadilha comum: não use a função sum() do Python com strings

Porque vimos que a função sum() pode ser usada para achatar e concatenar listas (e outros iteráveis ​​como tuplas); é tentador pensar que podemos usá-lo para concatenar strings também.

Mas se você tentar fazer isso, encontrará um TypeError:

>>> sum(['a','b','c'],'')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sum() can't sum strings [use ''.join(seq) instead]

Portanto, a função sum() não pode ser usada para somar (ou concatenar) strings.

No entanto, conforme visto na mensagem de erro acima, você pode usar o método join() para concatenar uma lista de strings em uma única string.

>>> ''.join(['a','b','c'])
'abc'

Conclusão

Neste tutorial, aprendemos como usar a função interna sum() para encontrar a soma de todos os elementos em um iterável. A sintaxe geral para usar a função sum() é: sum(iterable, start), onde iterable é um argumento obrigatório e start é um argumento opcional.

Em seguida, codificamos vários exemplos para entender o uso da função sum() com iteráveis ​​como listas, tuplas, conjuntos e dicionários. Posteriormente, vimos como a função sum() pode ser usada para simplificar e concatenar iteráveis ​​— com exceção de strings Python.

Espero que você tenha achado este tutorial útil. Em seguida, você pode conferir este tutorial sobre a função map do Python.