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

Resumo: neste tutorial, você aprenderá como usar a função reduce() do Python para reduzir uma lista a 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]

E para calcular a soma de todos os elementos da lista scores, você pode usar um loop for como este:

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

total = 0

for score in scores:
    total += score

print(total)

Saída:

365

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

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

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

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

reduce(fn,list)

A função reduce() aplica a função fn 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() e filter(), reduce() não é uma função interna do Python. Na verdade, a função reduce() pertence ao módulo functools.

Para usar a função reduce(), você precisa importá-la do módulo functools usando a seguinte instrução na parte superior do arquivo:

from functools import reduce

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

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

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)

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
365

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

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

from functools import reduce

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

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

print(total)

Resumo

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

Deixe um comentário

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