함수형 프로그래밍은 문제를 해결하기 위해 일련의 함수를 사용합니다. 일반적인 프로그래밍 사고에 따르면, 문제에 직면했을 때 우리의 사고 방식은 "어떻게 해야 하는가"인 반면, 함수형 프로그래밍의 사고 방식은 "내가 무엇을 하고 싶은가"입니다. . 함수형 프로그래밍의 특징에 대해서는 지금은 요약하지 않겠습니다. 함수형 프로그래밍이 무엇인지 이해하기 위해 직접 예제를 살펴보겠습니다.
lambda 표현식(익명 함수):
일반 함수와 익명 함수를 정의하는 방법:
#Ordinary function def add(a,b):
return a + bprint add(2,3) #匿名函数add = lambda a,b : a + bprint add(2,3)#========输出===========5 5
익명 함수에 대한 명명 규칙, 식별됨 lamdba 키워드에서 콜론(:)의 왼쪽은 함수가 받은 매개변수(a, b)를 나타내고, 콜론(:)의 오른쪽은 함수의 반환값(a+b)을 나타낸다.
lamdba는 생성 시 이름을 지정할 필요가 없기 때문에 익명 함수라고 합니다. ^_^
Map 함수:
문자열 길이 계산
abc = ['com','fnng','cnblogs']for i in range(len(abc)): print len(abc[i])#========输出===========347
abc 문자열 배열을 정의하고 abc를 계산합니다. 길이를 지정한 다음 출력 배열을 반복합니다. 각 문자열의 길이입니다.
map() 함수가 이 프로세스를 어떻게 구현하는지 살펴보겠습니다.
abc_len = map(len,['hao','fnng','cnblogs'])print abc_len#========输出===========[3, 4, 7]
출력 결과는 동일하지만 형태가 다릅니다. 첫 번째는 단순한 숫자 값이며, map() 함수의 출력은 여전히 배열 형식을 유지합니다.
대소문자 변환;
Python은 대소문자 변환을 위한 upper() 및 lower()를 제공합니다.
#대소문자 변환 ss='hello WORLD!'
print ss.upper() #대문자로 변환 print ss.lower() #소문자로 변환#========출력=== = =======안녕하세요!
hello world!
map() 함수를 통해 변환:
def to_lower(item): return item.lower()name = map(to_lower,['cOm','FNng','cnBLoGs'])print name#========输出===========['com', 'fnng', 'cnblogs']
이 예에서는 Upper에 함수를 작성했음을 알 수 있습니다. 이 함수는 전달된 값을 변경하지 않지만, 전달된 값에 대해 간단한 작업을 수행하고 반환하면 됩니다. 그런 다음 이를 맵 기능에서 사용하여 수행하려는 작업을 명확하게 설명합니다.
문자열 대/소문자 변환을 일반적인 방법으로 구현하는 방법을 살펴보겠습니다.
abc = ['cOm','FNng','cnBLoGs']lowname = []for i in range(len(abc)): lowname.append(abc[i].lower())print lowname#========输出===========['hao', 'fnng', 'cnblogs']
map() 함수와 람다 식(익명 함수)을 더하면 더욱 강력한 기능을 얻을 수 있습니다.
#사각형 찾기#0*0,1*1,2*2,3*3,...8*8사각형 = map(lambda x : x*x ,range(9))사각형 인쇄#=== =====출력===========[0, 1, 4, 9, 16, 25, 36, 49, 64]
Reduce 함수:
def add(a,b): return a+b add = reduce(add,[2,3,4])print add#========输出===========9 对于Reduce函数每次是需要对两个数据进行处理的,首选取2 和3 ,通过add函数相加之后得到5,接着拿5和4 ,再由add函数处理,最终得到9 。
이전 맵 함수 예시에서 지도 함수는 한 번에 하나의 데이터만 처리하는 것을 볼 수 있습니다.
그런 다음 Reduce 함수와 람다 표현식을 통해 계승을 구현하는 것이 얼마나 간단한지 발견했습니다.
#5Factorial#5! =1*2*3*4*5print Reduce(lambda x,y: x*y, range(1,6))#========출력============120
Python에는 매핑 및 축소 외에도 필터, 찾기, 모두 및 기타 보조 기능(다른 기능 언어에서도 사용 가능)과 같은 다른 기능도 있어 코드를 더 간결하고 읽기 쉽게 만들 수 있습니다. 좀 더 복잡한 예를 살펴보겠습니다.
#배열 번호 =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8]에서 양의 정수 값을 계산합니다.
개수 = 0
sum = 0for i in range(len(number)):
if number[i]>0: count += 1 sum += number[i]print sum,countif count>0: average = sum/countprint average
#========출력=============30 6 5
함수형 프로그래밍을 사용한다면 이 예제는 다음과 같이 작성할 수 있습니다:
number =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8] sum = filter(lambda x: x>0, number) average = reduce(lambda x,y: x+y, sum)/len(sum)print average
#========Output============5
마지막으로 우리는 함수형 프로그래밍에는 다음과 같은 이점이 있습니다.
1) 코드가 더 간단합니다.
2) 데이터 세트, 연산, 반환 값이 모두 합쳐집니다.
3) 코드를 읽을 때 루프 본문이 없으므로 일부 임시 변수와 변수의 앞뒤로 이동하는 논리를 저장할 수 있습니다.
4) 코드는 수행 방법보다는 수행하려는 작업을 설명하게 됩니다.
위 내용은 Python 함수형 프로그래밍 예제 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!