>백엔드 개발 >파이썬 튜토리얼 >Python 프로그래밍: 루프를 피하는 탁월한 방법!

Python 프로그래밍: 루프를 피하는 탁월한 방법!

PHPz
PHPz앞으로
2023-04-26 15:10:081780검색

우리는 Python에서 루프를 사용하는 것이 매우 느리다는 것을 알고 있습니다. 유사한 상황을 처리하는 경우 어떻게 해야 합니까?

不要在 Python 中使用循环,这些方法其实更棒!

이 기사에서는 Python 루프를 대체하는 데 사용할 수 있는 방법과 사례를 공유하겠습니다.

  • Map
  • Filter
  • Reduce

위 기능을 사용하기 전에 람다 함수에 익숙하지 않은 경우 간단히 살펴보겠습니다.

Lambda 함수는 일반 함수의 대안입니다. 한 줄의 코드로 정의할 수 있으므로 코드에서 시간과 공간을 덜 차지합니다. 예를 들어 아래 코드에서는 람다 함수가 실제로 작동하는 것을 볼 수 있습니다.

def multiply_by_2(x):
x*2

lambda function

lambda x: x*2

참고: 일반 함수 대신 람다 함수를 사용하는 것이 더 좋습니다.

1. Map

map 함수를 사용하면 반복 가능한 객체(리스트, 튜플 등)의 각 값에 함수를 적용할 수 있습니다.

map(function, iterable)

목록(반복 가능한 객체)에서 제곱수를 얻고 싶다고 가정해 보세요. 먼저 숫자의 제곱을 구하는 square() 함수를 만듭니다.

def square(x):
return x*x

그런 다음 map 함수를 사용하여 입력된 숫자 목록에 square() 함수를 적용하겠습니다.

input_list = [2, 3, 4, 5, 6]
# Without lambda 
result = map(square, input_list)
# Using lambda function 
result = map(lambda x: x*x, input_list)
# converting the numbers into a list
list(result)
# Output: [4, 9, 16, 25, 36]

2. Filter

직관적으로 필터 함수는 반복 가능한 객체(목록, 튜플, 집합 등)에서 값을 필터링하는 데 사용됩니다. 필터 조건은 필터 함수에 매개변수로 전달된 함수 내에서 설정됩니다.

filter(function, iterable)

10보다 작은 값을 필터링하려면 필터 기능을 사용하겠습니다.

def less_than_10(x):
if x < 10:
return x

그런 다음 필터 함수를 사용하여 less_than_10() 함수를 값 목록에 적용합니다.

input_list = [2, 3, 4, 5, 10, 12, 14] 
# Without lambda
list(filter(less_than_10, input_list))
# using lambda function 
list(filter(lambda x: x < 10, input_list))
# Output: [2, 3, 4, 5]

3.Reduce

Reduce 기능은 맵, 필터 기능과 조금 다릅니다. iterable의 모든 값에 반복적으로 적용되며 하나의 값만 반환합니다.

아래 예시에서는 덧셈 기능을 적용하여 숫자 목록을 줄였습니다. 최종 출력은 목록에 있는 모든 숫자의 합인 15가 됩니다. 不要在 Python 中使用循环,这些方法其实更棒!두 개의 입력 숫자를 더하는 add() 함수를 만들어 보겠습니다.

def addition(x,y):
return x + y

다음으로 목록에 있는 모든 숫자의 합을 구하기 위해 이 덧셈 함수를 축소 함수의 인수로 적용하겠습니다.

from functools import reduce
input_list = [1, 2, 3, 4, 5]
# Without Lambda function
reduce(addition, input_list))
# With Lambda function
reduce(lambda x,y: x+y, input_list))
# Output: 15


위 내용은 Python 프로그래밍: 루프를 피하는 탁월한 방법!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제