Python에서 고차 함수를 사용하여 가지치기 함수를 구현하는 방법
이 글은 가지치기 기능을 구현하기 위한 Python의 고차 함수 사용에 대한 관련 정보를 주로 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.
사례:
때로는 타이밍 통계, 로깅, 작업 결과 캐싱 등과 같은 특정 기능을 여러 기능에 추가하고 싶을 때가 있습니다.
요구 사항:
각 기능에 필요하지 않음 완전히 동일한 코드 추가
해결 방법?抽 동일한 코드를 탐색하여 데코레이터로 정의합니다. 아래에서 위로 계단은 총 10개이며 한 번에 1~3단계만 이동할 수 있으며 돌아갈 수 없는 경로는 몇 개입니까?问题 问题
:
1~3걸음을 걸을 때마다 나머지는 7~9걸음을 찾아야 합니다. 9단계 to go 2걸음을 밟으면 뒤에서 8걸음으로 갈 길을 찾아야 하고, 3걸음을 걸으면 다음 7걸음의 3가지 길을 찾아야 한다. 이런 식으로 구현하면 재귀는 같다. 각 재귀는 하위 노드 함수를 생성합니다
위의 두 가지 문제를 재귀를 통해 해결하면 문제가 발생하게 되며, 이를 C++ 언어에서는 호출합니다. 가지치기 함수
#!/usr/bin/python3
def jian_zhi(func):
# 中间字典,判断已经是否求解过
median = {}
def wrap(*args):
# 假如不在中间字典中,说明没有求解过,添加到字典中去,在的话,直接返回
if args not in median:
median[args] = func(*args)
return median[args]
return wrap
@jian_zhi
def fibonacci(n):
if n <= 1:
return 1
return fibonacci(n-1) + fibonacci(n-2)
@jian_zhi
def climb(n, steps):
count = 0
# 当最后台阶为0的时候,说明最后只是走了一次
if n == 0:
count = 1
# 当最后台阶不为0的时候,说明还需要走至少一次
elif n > 0:
# 对三种情况进行分别处理momo
for step in steps:
count += climb(n-step, steps)
# 返回每次递归的计数
return count
if __name__ == '__main__':
print(climb(10, (1, 2, 3)))
print(fibonacci(20))라고 불리는 가지치기 함수는 단지 각 재귀마다 함수의 고유성을 보장하고 중간 사전을 사용하여 실행된 함수와 매개변수를 저장하며 매개변수를 판단하여 반복되는 함수 호출을 제거합니다. 위 내용은 Python에서 고차 함수를 사용하여 가지치기 함수를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!
핫 AI 도구
Undress AI Tool
무료로 이미지를 벗다
Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱
AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.
Clothoff.io
AI 옷 제거제
Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!
인기 기사
뜨거운 도구
메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.
스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
드림위버 CS6
시각적 웹 개발 도구
SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)
뜨거운 주제
8648
17
1792
16
1733
56
1583
29
1455
31
파이썬에서 API 인증을 처리하는 방법
Jul 13, 2025 am 02:22 AM
API 인증을 다루는 핵심은 인증 방법을 올바르게 이해하고 사용하는 것입니다. 1. Apikey는 가장 간단한 인증 방법이며, 일반적으로 요청 헤더 또는 URL 매개 변수에 배치됩니다. 2. Basicauth는 내부 시스템에 적합한 Base64 인코딩 전송에 사용자 이름과 비밀번호를 사용합니다. 3. OAUTH2는 먼저 Client_ID 및 Client_Secret을 통해 토큰을 얻은 다음 요청 헤더에 BearEtroken을 가져와야합니다. 4. 토큰 만료를 처리하기 위해 토큰 관리 클래스를 캡슐화하고 자동으로 새로 고칠 수 있습니다. 요컨대, 문서에 따라 적절한 방법을 선택하고 주요 정보를 안전하게 저장하는 것이 중요합니다.
튜플 위의 루프 용 파이썬
Jul 13, 2025 am 02:55 AM
파이썬에서, 루프를 위해 튜플을 가로 지르는 방법에는 직접적으로 반복되는 요소를 반복하고, 동시에 인덱스와 요소를 얻고, 중첩 된 튜플을 처리하는 것이 포함됩니다. 1. For Loop을 사용하여 인덱스를 관리하지 않고 각 요소에 순서대로 액세스하십시오. 2. enumerate ()를 사용하여 인덱스와 값을 동시에 얻으십시오. 기본 인덱스는 0이고 시작 매개 변수도 지정할 수 있습니다. 3. 중첩 된 튜플은 루프에서 포장을 풀 수 있지만, 아크 튜플 구조가 일관되도록해야한다. 그렇지 않으면 포장 풀기 오류가 올 것이다. 또한 튜플은 불변이며 루프에서 내용을 수정할 수 없습니다. 원치 않는 값은 \ _에 의해 무시할 수 있습니다. 오류를 피하기 위해 트래버지하기 전에 튜플이 비어 있는지 확인하는 것이 좋습니다.
파이썬에서 순수한 기능은 무엇입니까?
Jul 14, 2025 am 12:18 AM
Python의 순수 함수는 동일한 입력이 주어진 부작용없이 항상 동일한 출력을 반환하는 기능을 나타냅니다. 그 특성에는 다음이 포함됩니다. 1. 결정론, 즉 동일한 입력은 항상 동일한 출력을 생성합니다. 2. 부작용, 즉 외부 변수, 입력 데이터 및 외부 세계와의 상호 작용이 없습니다. 예를 들어, defadd (a, b) : returna b는 몇 번의 추가 (2,3)가 호출 되더라도 프로그램의 다른 컨텐츠를 변경하지 않고 항상 5를 반환하기 때문에 순수한 기능입니다. 대조적으로, 글로벌 변수를 수정하거나 입력 매개 변수를 변경하는 함수는 비 퓨어 함수입니다. 순수한 기능의 장점은 테스트하기 쉽고 동시 실행에 더 적합하며 성능을 향상시키기위한 캐시 결과를 얻을 수 있으며 Map () 및 Filter ()와 같은 기능 프로그래밍 도구와 잘 일치 할 수 있습니다.
파이썬에서 다른 방법은 무엇입니까?
Jul 13, 2025 am 02:48 AM
IFELSE는 조건부 판단을 위해 Python에 사용되는 인프라이며, 다른 코드 블록은 조건의 진위를 통해 실행됩니다. 다중 조건 판단이 판단 할 때 Branch를 추가하기 위해 ELIF의 사용을 지원하고, 계약은 구문 키입니다. Num = 15 인 경우 프로그램은 "이 숫자는 10보다 큽니다"; 할당 논리가 필요한 경우 상태 = "성인"ifage> = 18else "Minor"와 같은 3 배 연산자를 사용할 수 있습니다. 1. Ifelse는 참 또는 거짓 조건에 따라 실행 경로를 선택합니다. 2. Elif는 여러 조건 분기를 추가 할 수 있습니다. 3. 들여 쓰기는 코드의 소유권을 결정하고 오류는 예외로 이어질 것입니다. 4. 제 3의 운영자는 간단한 할당 시나리오에 적합합니다.
파이썬에서 방법이 무시되는 것을 방지하는 방법은 무엇입니까?
Jul 13, 2025 am 02:56 AM
Python에서는 최종 키워드가 내장되어 있지 않지만 이름 다시 쓰기, 런타임 예외, 데코레이터 등을 통해 탁월한 메소드를 시뮬레이션 할 수 있습니다. 1. Double Outscore Prefix를 사용하여 이름을 다시 작성하여 서브 클래스가 메소드를 덮어 쓰는 것이 어렵습니다. 2.이 메소드에서 발신자 유형을 판단하고 서브 클래스 재정의를 방지하기 위해 예외를 던집니다. 3. 사용자 정의 데코레이터를 사용하여 메소드를 최종으로 표시하고 메타 클래스 또는 클래스 데코레이터와 함께 확인하십시오. 4. 동작은 수정 가능성을 줄이기 위해 속성 속성으로 캡슐화 될 수 있습니다. 이 방법은 다양한 수준의 보호를 제공하지만 그 중 어느 것도 적용 범위 행동을 완전히 제한하지 않습니다.
파이썬 클래스에 여러 생성자가있을 수 있습니까?
Jul 15, 2025 am 02:54 AM
예, ApythonclasscanhavemultiplecontructorsthrowaltiveTechniques.1.usedefaultargumentsinthe__init__methodtoallowflexibleinitializationswithvaryingnumbersofparameters.2.defineclassmethodsasaltistuctructorsforcecalobbebcreati
루프 범위의 파이썬
Jul 14, 2025 am 02:47 AM
Python에서 범위 () 함수와 함께 루프를 사용하는 것은 루프 수를 제어하는 일반적인 방법입니다. 1. 루프 수를 알고 있거나 인덱스별로 요소에 액세스 해야하는 경우 사용하십시오. 2. 범위 (정지) 0에서 STOP-1, 범위 (시작, 중지) 시작부터 정지 -1까지, 범위 (시작, 정지) 단계 크기를 추가합니다. 3. 범위는 최종 값을 포함하지 않으며 Python 3의 목록 대신 반복 가능한 객체를 반환합니다. 4. 목록을 통해 목록 (range ())로 변환하고 리버스 순서로 음수 단계 크기를 사용할 수 있습니다.
파이썬의 웹 API에서 데이터에 액세스합니다
Jul 16, 2025 am 04:52 AM
Python을 사용하여 WebApi를 호출하여 데이터를 얻는 것의 핵심은 기본 프로세스와 공통 도구를 마스터하는 것입니다. 1. 요청을 사용하여 HTTP 요청을 시작하는 것이 가장 직접적인 방법입니다. Get 메소드를 사용하여 응답을 얻고 JSON ()을 사용하여 데이터를 구문 분석하십시오. 2. 인증이 필요한 API의 경우 헤더를 통해 토큰 또는 키를 추가 할 수 있습니다. 3. 응답 상태 코드를 확인해야합니다. 예외를 자동으로 처리하려면 response.raise_for_status ()를 사용하는 것이 좋습니다. 4. 페이징 인터페이스에 직면하여 다른 페이지를 차례로 요청하고 주파수 제한을 피하기 위해 지연을 추가 할 수 있습니다. 5. 반환 된 JSON 데이터를 처리 할 때 구조에 따라 정보를 추출해야하며 복잡한 데이터를 데이터로 변환 할 수 있습니다.


