Como usar a função Python Reduce() para reduzir uma lista em um único valor

Resumo : neste tutorial, você aprenderá como usar a função reduzir() do Python para reduzir uma lista em um único valor.

Reduzindo uma lista

Às vezes, você deseja reduzir uma lista a um único valor. Por exemplo, suponha que você tenha uma lista de números :

scores = [75, 65, 80, 95, 50]Linguagem de código:  Python  ( python )

E para calcular a soma de todos os elementos da scoreslista, você pode usar um forloop como este:

scores = [75, 65, 80, 95, 50]

total = 0

for score in scores:
    total += score

print(total)
Linguagem de código:  Python  ( python )

Saída:

365Linguagem de código:  Python  ( python )

Neste exemplo, reduzimos a lista inteira a um único valor, que é a soma de todos os elementos da lista.

Introdução à função reduzir() do Python

Python oferece uma função chamada reduce()que permite reduzir uma lista de forma mais concisa.

Aqui está a sintaxe da reduce()função:

reduce(fn,list)Linguagem de código:  Python  ( python )

A reduce()função aplica a fnfunção de dois argumentos cumulativamente aos itens da lista, da esquerda para a direita, para reduzir a lista a um único valor.

Ao contrário das funções map()and filter(), the reduce()não é uma função integrada no Python. Na verdade, a reduce()função pertence ao functoolsmódulo.

Para usar a reduce()função, você precisa importá-la do functoolsmódulo usando a seguinte instrução no topo do arquivo:

from functools import reduce
Linguagem de código:  Python  ( python )

Observe que você aprenderá mais sobre os módulos e como usá-los no tutorial posterior.

O seguinte ilustra como usar a reduce()função para calcular a soma dos elementos da scoreslista:

from functools import reduce

def sum(a, b):
    print(f"a={a}, b={b}, {a} + {b} ={a+b}")
    return a + b


scores = [75, 65, 80, 95, 50]
total = reduce(sum, scores)
print(total)
Linguagem de código:  Python  ( python )

Saída:

a=75, b=65, 75 + 65 = 140
a=140, b=80, 140 + 80 = 220
a=220, b=95, 220 + 95 = 315
a=315, b=50, 315 + 50 = 365
365Linguagem de código:  Python  ( python )

Como você pode ver claramente na saída, a reduce()função adiciona cumulativamente dois elementos da lista da esquerda para a direita e reduz a lista inteira em um único valor.

Para tornar o código mais conciso, você pode usar uma expressão lambda em vez de definir a sum()função:

from functools import reduce

scores = [75, 65, 80, 95, 50]

total = reduce(lambda a, b: a + b, scores)

print(total)Linguagem de código:  Python  ( python )

Resumo

  • Use a função Python reduce()para reduzir uma lista em um único valor.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *