>  기사  >  백엔드 개발  >  Python 함수형 프로그래밍 예제 튜토리얼

Python 함수형 프로그래밍 예제 튜토리얼

零下一度
零下一度원래의
2017-06-30 16:08:431236검색

 함수형 프로그래밍은 문제를 해결하기 위해 일련의 함수를 사용합니다. 일반적인 프로그래밍 사고에 따르면, 문제에 직면했을 때 우리의 사고 방식은 "어떻게 해야 하는가"인 반면, 함수형 프로그래밍의 사고 방식은 "내가 무엇을 하고 싶은가"입니다. . 함수형 프로그래밍의 특징에 대해서는 지금은 요약하지 않겠습니다. 함수형 프로그래밍이 무엇인지 이해하기 위해 직접 예제를 살펴보겠습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.