Em Python, reduzir() é uma função integrada que aplica uma determinada função aos elementos de um iterável, reduzindo-os a um único valor.
A sintaxe para reduzir() é a seguinte:
functools.reduce(function, iterable[, initializer])
- O argumento de função é uma função que recebe dois argumentos e retorna um único valor. O primeiro argumento é o valor acumulado e o segundo argumento é o valor atual do iterável.
- O iterável argumento é a sequência de valores a serem reduzidos.
- O argumento opcional do inicializador é usado para fornecer um valor inicial para o resultado acumulado. Se nenhum inicializador for especificado, o primeiro elemento do iterável será usado como valor inicial.
Aqui está um exemplo que demonstra como usar reduzir() para encontrar a soma de uma lista de números:
matriz de objetos em java
# Examples to understand the reduce() function from functools import reduce # Function that returns the sum of two numbers def add(a, b): return a + b # Our Iterable num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # add function is passed as the first argument, and num_list is passed as the second argument sum = reduce(add, num_list) print(f'Sum of the integers of num_list : {sum}') # Passing 10 as an initial value sum = reduce(add, num_list, 10) print(f'Sum of the integers of num_list with initial value 10 : {sum}')
Saída:
Sum of the integers of num_list : 55 Sum of the integers of num_list with initial value 10 : 65
Neste exemplo, usamos a função reduzir() para aplicar uma função add que retorna a soma de dois valores para cada par de elementos na lista de números, resultando na soma de todos os elementos.
Vamos usar a função lambda como primeiro argumento da função reduzir():
pandas loca
# Importing reduce function from functools from functools import reduce # Creating a list my_list = [1, 2, 3, 4, 5] # Calculating the product of the numbers in my_list # using reduce and lambda functions together product = reduce(lambda x, y: x * y, my_list) # Printing output print(f'Product = {product}') # Output : Product = 120
Vamos detalhar como o reduzir() função funciona para o exemplo dado:
A função reduzir() recebe dois argumentos: uma função e um iterável. Nesse caso, usamos uma função lambda lambda x, y: x * y como função e a lista de números como iterável.
- A função lambda aceita as variáveis x e y, multiplica-as e retorna o resultado. Quando a função lambda é executada inicialmente, as variáveis x e y são definidas para o primeiro e segundo elementos, respectivamente, de my_list (ou seja, x = 1 e y = 2). A função lambda multiplica esses dois números e retorna o resultado (1 * 2 = 2).
- Na segunda vez que a função lambda é chamada, x é definido como o resultado da chamada anterior (x = 2) e y é definido como o terceiro elemento da lista de números (ou seja, y = 3). Multiplica esses dois valores e retorna o resultado (2 * 3 = 6).
- A função lambda é chamada repetidamente dessa forma para cada elemento em my_list até que todos os elementos tenham sido manipulados. A função reduzir() retorna o produto de todos os elementos da lista, que é então atribuído à variável produto como 120. Este produto é calculado da seguinte forma: ((((1 * 2) * 3)* 4)* 5) = 120.
- Finalmente, imprimimos o valor da variável produto usando a função print(), que produz 120.
Função reduzir() com funções de operador
Podemos tornar nosso código mais conciso e fácil de ler usando funções de operador em vez de funções lambda.
Aqui está um exemplo para demonstrar o uso de funções de operador como o primeiro argumento da função de redução:
# Python program to demonstrate # how to use operator functions with reduce function # Importing reduce function from functools import reduce # Importing operator import operator # Creating lists my_list1 = [1, 2, 3, 4, 5] my_list2 = ['I', 'Love', 'Javatpoint'] # Calculating the sum of the numbers of my_list1 # using reduce and operator.add sum = reduce(operator.add, my_list1) # Calculating the product of the numbers of my_list1 # using reduce and operator.mul product = reduce(operator.mul, my_list1) # Concatenating all the elements in my_list2 # using reduce and operator.concat concated_str1 = reduce(operator.concat, my_list2) # We can achieve the same output by using operator.add concated_str2 = reduce(operator.add, my_list2) # Printing result print(f'Sum of all elements in my_list1 : {sum}') print(f'Product of all elements in my_list1 : {product}') print(f'Concatenated string by using operator.concat : {concated_str1}') print(f'Concatenated string by using operator.add : {concated_str2}')
Saída:
Sum of all elements in my_list1 : 15 Product of all elements in my_list1 : 120 Concatenated string by using operator.concat : ILoveJavatpoint Concatenated string by using operator.add : ILoveJavatpoint
Este código mostra como usar a função reduz() e funções de operador para realizar operações matemáticas e de string em iteráveis em Python.
Compreendendo a diferença entre as funções reduzir() e acumular():
O módulo functools do Python fornece as funções reduzir() e acumular(), ambas operando em iteráveis de maneiras comparáveis.
peso de kat timpf
- O reduzir () e acumular () as funções são semelhantes porque ambas aceitam dois argumentos: o próprio iterável e uma função que descreve a operação a ser realizada nele. A maneira como eles lidam com os resultados da operação, entretanto, é onde eles mais divergem entre si.
- O reduzir () faz a operação nos dois primeiros elementos do iterável antes de executar a mesma operação no resultado e no próximo elemento. Este processo é repetido até que todos os elementos do iterável tenham sido processados. A saída final da operação é retornada como um único resultado.
- Enquanto o acumular () também aplica a operação aos dois primeiros elementos do iterável antes de executar a mesma operação no resultado e nos elementos subsequentes, a função acumular() retorna um iterador contendo os resultados intermediários da operação. Em outras palavras, após cada elemento ter sido tratado, o acumular () fornece uma série de valores que representam o resultado da operação.
Um exemplo para entender a diferença entre acumular() e reduzir():
# Python Program to demonstrate the difference # between reduce and accumulate # Importing reduce and accumulate function from functools import reduce, accumulate # Creating a list my_list = [1, 2, 3, 4, 5] # Using reduce() to calculate the product of all numbers product = reduce(lambda x, y: x * y, my_list) print(f'Product using reduce() : {product}') # Output: 120 # Using accumulate() to calculate the product of all numbers products = list(accumulate(my_list, lambda x, y: x * y)) print(f'Products using accumulate() : {products}')# Output: [1, 2, 6, 24, 120]
Neste exemplo, temos uma lista de números [1, 2, 3, 4, 5]. Nós usamos reduzir() para calcular o produto de todos os números, que retorna um único valor de 120.
Nós também usamos acumular() para calcular o produto de todos os números. No entanto, em vez de retornar um único valor, acumular() retorna um iterador que produz uma sequência de resultados intermediários: [1, 2, 6, 24, 120].
Então, a principal diferença entre reduzir() e acumular() é que reduzir() retorna um único valor que é a saída final da operação. Por outro lado, acumular() retorna um iterador que produz uma sequência de resultados intermediários.