logo

Python의 축소()

Python에서 Reduce()는 주어진 함수를 반복 가능한 요소에 적용하여 단일 값으로 줄이는 내장 함수입니다.

Reduce()의 구문은 다음과 같습니다.

 functools.reduce(function, iterable[, initializer]) 
  • 그만큼 함수 인수 두 개의 인수를 사용하여 단일 값을 반환하는 함수입니다. 첫 번째 인수는 누적된 값이고 두 번째 인수는 반복 가능한 현재 값입니다.
  • 그만큼 반복 가능한 인수는 감소할 값의 시퀀스입니다.
  • 선택적 초기화 인수는 누적된 결과에 대한 초기 값을 제공하는 데 사용됩니다. 초기화 프로그램이 지정되지 않으면 iterable의 첫 번째 요소가 초기 값으로 사용됩니다.

다음은 숫자 목록의 합계를 찾기 위해 Reduce()를 사용하는 방법을 보여주는 예입니다.

 # 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}') 

산출:

 Sum of the integers of num_list : 55 Sum of the integers of num_list with initial value 10 : 65 

이 예에서는 Reduce() 함수를 사용하여 두 값의 합을 숫자 목록의 각 요소 쌍에 반환하는 add 함수를 적용하여 결과적으로 모든 요소의 합을 구합니다.

자바 if문

Reduce() 함수의 첫 번째 인수로 람다 함수를 사용해 보겠습니다.

 # 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 

어떻게 분석해 봅시다. 줄이다() 함수는 주어진 예에서 작동합니다.

Reduce() 함수는 함수와 반복 가능이라는 두 가지 인수를 사용합니다. 이 경우에는 람다 함수(lambda x, y: x * y)를 함수로 사용하고 숫자 목록을 반복 가능 항목으로 사용합니다.

  • 람다 함수는 변수 x와 y를 받아들여 이를 곱하고 결과를 반환합니다. 람다 함수가 처음 실행되면 변수 x와 y는 각각 my_list의 첫 번째 요소와 두 번째 요소로 설정됩니다(예: x = 1 및 y = 2). 람다 함수는 이 두 숫자를 곱하고 결과(1 * 2 = 2)를 반환합니다.
  • 람다 함수가 두 번째로 호출되면 x는 이전 호출의 결과(x = 2)로 설정되고 y는 숫자 목록의 세 번째 요소(예: y = 3)로 설정됩니다. 이 두 값을 곱하고 결과(2 * 3 = 6)를 반환합니다.
  • 모든 요소가 처리될 때까지 my_list의 각 요소에 대해 이러한 방식으로 람다 함수가 반복적으로 호출됩니다. Reduce() 함수는 목록의 모든 요소의 곱을 반환한 후 product 변수에 120으로 할당됩니다. 이 곱은 다음과 같이 계산됩니다. ((((1 * 2) * 3)* 4)* 5) = 120.
  • 마지막으로 print() 함수를 사용하여 120을 출력하는 product 변수의 값을 인쇄합니다.

연산자 함수가 있는 Reduce() 함수

람다 함수 대신 연산자 함수를 사용하면 코드를 더 간결하고 읽기 쉽게 만들 수 있습니다.

다음은 축소 함수의 첫 번째 인수로 연산자 함수를 사용하는 방법을 보여주는 예입니다.

 # 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}') 

산출:

 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 

이 코드는 Python에서 iterable에 대한 수학 및 문자열 연산을 수행하기 위해 Reduce() 함수 및 연산자 함수를 사용하는 방법을 보여줍니다.

jframe

Reduce() 함수와 Accumulate() 함수의 차이점 이해:

Python functools 모듈은 비슷한 방식으로 반복 가능 항목에 대해 작동하는 함수 Reduce() 및 Accumulate()를 제공합니다.

  1. 그만큼 줄이다 () 그리고 축적하다 () 함수는 둘 다 두 개의 인수, 즉 iterable 자체와 수행할 작업을 설명하는 함수를 허용한다는 점에서 유사합니다. 그러나 작업 결과를 처리하는 방식은 서로 가장 많이 다른 부분입니다.
  2. 그만큼 줄이다 () 함수는 결과와 다음 요소에 대해 동일한 작업을 실행하기 전에 반복 가능 항목의 처음 두 요소에 대해 작업을 수행합니다. 이 프로세스는 iterable의 모든 요소가 처리될 때까지 반복됩니다. 작업의 최종 출력은 단일 결과로 반환됩니다.
  3. 동안 축적하다 () 함수는 또한 결과 및 후속 요소에 대해 동일한 작업을 수행하기 전에 반복 가능 항목의 처음 두 요소에 작업을 적용하며, activate() 함수는 작업의 중간 결과를 포함하는 반복자를 반환합니다. 즉, 각 요소를 처리한 후 축적하다 () 함수는 작업 결과를 나타내는 일련의 값을 제공합니다.

Accumulate()와 Reduce()의 차이점을 이해하는 예:

 # 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] 

이 예에는 숫자 [1, 2, 3, 4, 5] 목록이 있습니다. 우리는 사용 줄이다() 모든 숫자의 곱을 계산하면 단일 값 120이 반환됩니다.

우리는 또한 사용합니다 축적하다() 모든 숫자의 곱을 계산합니다. 그러나 단일 값을 반환하는 대신 축적하다() 일련의 중간 결과([1, 2, 6, 24, 120])를 생성하는 반복자를 반환합니다.

따라서 두 제품의 주요 차이점은 줄이다() 그리고 Accumulator()는 Reduce()가 작업의 최종 출력인 단일 값을 반환한다는 것입니다. 대조적으로, stack()은 일련의 중간 결과를 생성하는 반복자를 반환합니다.