이 글은 Python에서 일반적으로 사용되는 5가지 내장 고차 함수(코드 포함)를 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
Python에는 일반적으로 사용되는 고차 함수가 내장되어 있습니다.
1. 함수형 프로그래밍
함수 자체는 변수에 할당될 수 있으며 할당 후 변수는 함수가 됩니다.
함수 자체가 다음을 수행할 수 있습니다. 매개변수로 다른 함수에 전달됩니다.
허용합니다. 함수를 반환합니다.
1. map() 함수
는 Python에 내장된 고차 함수입니다.
함수 f를 목록의 각 요소에 적용합니다. 새로운 목록을 얻고
def add(x): return x+x print(map(add,[1, 2, 3])) # Out:<map object at 0x00000239E833DE48> print(list(map(add,[1, 2, 3]))) # Out:[2, 4, 6]
2를 반환합니다. reduce() 함수
reduce() 함수도 Python에 내장된 고차 함수입니다.
reduce() 함수가 받은 매개변수는 map(), 함수 f 및 목록과 유사하지만, 행위가 map()과 다릅니다. Reduce()가 전달한 함수 f는 두 개의 매개변수
를 받아야 합니다.reduce() 함수 f는 목록의 각 요소에 대해 반복적으로 호출되고 최종 결과 값이 반환됩니다.
Python3에서는 전역 네임스페이스에서 감소() 함수가 제거되었습니다. 이제 functools 모듈에 배치되었습니다. 이를 사용하려면
functools 모듈을 도입하여 감소() 함수를 호출해야 합니다. :
from functools import reduce def prod(x, y): return x*y print(reduce(prod, [2, 4, 5, 7, 12])) # Out:3360 # 2*4*5*7*12 # reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100 print(reduce(prod, [2, 4, 5, 7, 12], 100)) # Out:336000 # 2*4*5*7*12*100
3, filter() 함수
는 Python에 내장된 또 다른 유용한 고차 함수입니다. filter() 함수는 함수 f와 목록을 받습니다. 각 요소를 판단하고, 필터()는 판단 결과에 따라 조건에 맞지 않는 요소를 자동으로 필터링합니다.
조건에 맞는 요소로 구성된 새 목록을 반환합니다.
import math def is_sqr(x): return math.sqrt(x) == int(math.sqrt(x)) print(list(filter(is_sqr, range(1, 101)))) # Out:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
4,
sort와 sorted의 차이점:
list의 정렬 메서드는 기존 목록에 대한 작업을 반환하는 반면, 내장 함수 sorted 메서드는 원래 목록을 기반으로 한 작업이 아닌 새 목록을 반환합니다.
sorted(iterable, key=None, reverse=False)
iterable -- 반복 가능한 개체입니다.
key - 매개변수가 하나뿐인 비교 요소에 주로 사용됩니다. 특정 함수 매개변수는 반복 가능한 객체에서 가져오고 정렬을 위해 반복 가능한 객체에 요소를 지정합니다.
reverse -- 정렬 규칙, reverse = 내림차순이면 True, 오름차순이면 reverse = False(기본값).
재정렬된 목록 반환
print(sorted([5, 2, 3, 1, 4])) # Out:[1, 2, 3, 4, 5] print(sorted({1:'D', 2:'B', 3:'B', 4:'E', 5: 'A'})) # Out:[1, 2, 3, 4, 5]
키를 사용하여 역순으로 정렬
example_list = [5, 0, 6, 1, 2, 7, 3, 4] result_list = sorted(example_list, key=lambda x: x*-1) print(result_list)
역 정렬하려면 세 번째 매개변수 reverse=True:
example_list = [5, 0, 6, 1, 2, 7, 3, 4] print(sorted(example_list, reverse=True)) # Out:[7, 6, 5, 4, 3, 2, 1, 0]
5를 전달할 수도 있습니다. Python 함수는 데이터를 반환할 수 있을 뿐만 아니라 int, str, list, dict 등과 같은 유형을 사용할 수 있으며 함수를 반환할 수도 있습니다!
반환 함수와 반환 값을 구별하는 데 주의하세요:
def my_abs(): return abs # 返回函数,返回函数可以把一些计算延迟 def my_abs2(x): return abs(x) # 返回函数调用的结果,返回值是一个数值
def calc_prod(lst): def lazy_prod(): prod = 1 for i in lst: prod = prod*i return prod return lazy_prod f = calc_prod([1, 2, 3, 4]) print(f()) # Out:24
5.1.lazy_prod() 함수와 반환 함수 cal_prod()를 정의하는 이유는 무엇입니까?
Python은 반환 함수의 기본 구문을 지원합니다
def f(): print('call f()...') # 定义函数g: def g(): print('call g()...') # 返回函数g: return g
만 반환 함수의 역할:
반환 함수는 일부 계산을 연기할 수 있습니다. 예를 들어 정규 합산 함수를 정의하는 경우:
def calc_sum(lst): return sum(lst) print(calc_sum([1,2,3,4])) # Out:10 def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum f = calc_sum([1, 2, 3, 4]) print(f) # 代码并没有对函数进行执行计算出结果,而是返回函数,所以打印出来的是类型 #Out: <function calc_sum.<locals>.lazy_sum at 0x000001FF43462E18> print(f()) # 对返回的函数进行调用时,才计算出结果 # Out:10
위 내용은 Python에서 일반적으로 사용되는 5가지 내장 고차 함수 소개(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!