> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 일반적으로 사용되는 5가지 내장 고차 함수 소개(코드 포함)

Python에서 일반적으로 사용되는 5가지 내장 고차 함수 소개(코드 포함)

不言
풀어 주다: 2019-04-12 11:29:57
앞으로
4145명이 탐색했습니다.

이 글은 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,

sorted() 함수 는 모든 반복 가능한 객체에 대해 정렬 작업을 수행합니다.

sort와 sorted의 차이점:

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:&#39;D&#39;, 2:&#39;B&#39;, 3:&#39;B&#39;, 4:&#39;E&#39;, 5: &#39;A&#39;}))
# 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(&#39;call f()...&#39;)
    # 定义函数g:
    def g():
        print(&#39;call g()...&#39;)
    # 返回函数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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿