首頁  >  文章  >  後端開發  >  關於Lambda表達式的實例教程

關於Lambda表達式的實例教程

PHP中文网
PHP中文网原創
2017-06-20 15:01:141764瀏覽

Lambda表達式的五練習

語法:

#Lambda函數,是一個匿名函數,建立語法:

 lambda parameters:express

parameters:可選,如果提供,通常是逗號分隔的變數表達式形式,即位置參數。

expression:不能包含分支或迴圈(但允許條件式),也不能包含return(或yield)函數。如果為元組,則應用圓括號將其包含起來。

呼叫lambda函數,傳回的結果是對表達式計算產生的結果

  • 1.題目:利用條件運算子的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。

print( str(score) + ' belongs to ' +

        (lambda x:(x>=90 and 'A' or x>= 60 and 'B' or 'C'))(score))

 

#2.題目:lambda的遞迴呼叫。將一個整數n,拆分列印出來。如234,應2,3,4分三行列印出來。

 

n = int(input ())
f=m,f:( (m / 10) !=0 f( int(m/10),f) ( m!=0  print(%(m%10) )))
f(n,f)

 

#3.主題:將一個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5。

程式分析:對n進行分解質因數,應先找出一個最小的質數k,然後按下述步驟完成:

(1)如果這個質數剛好等於n ,則說明分解質因數的過程已經結束,列印出來即可。

(2)如果n<>k,但n能被k整除,則應印出k的值,並用n除以k的商,作為新的正整數你n,

重複執行第一步。

(3)如果n不能被k整除,則用k+1作為k的值,重複執行第一步。

 

import os
import sys
from functools import reduce
from math import sqrt

n = int(input ("Please input a int:\n"))
ans =[]
nn=n
f=lambda m,i,c,f:(m%i ==0 and f(m//i,i,c+1,f) or (m,c))
def func(x,y):
    ret,count=f(x,y,0,f )
    if count >0:
       ans.append(count * [y] )
    return ret
reduce(func,[nn]+list(range(2,nn)))
print(ans)

 

4.題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加由輸入控制。


n= int(input("n=:\n"))
aa =a= int(input('a= :\n'))

f=lambda n,a,ans,la,f: n==0 and ans or f(n-1,a,ans+[la* 10+a],la*10+a,f )

print(reduce(lambda x,y:x+y,f(n,aa,[],0,f )))

 

  • 5.主題:一個數字如果剛好等於它的因式總和,這個數字就稱為「完數」。例如6=1+2+3.

程式設計:找出1000以內的所有完數。

                   
factors = lambda x:filter( lambda i: x%i==0 and i,range(1,x))))))#1(cda i: x%i==0 and i,range(1,x))))##f = 10 xd == x
print( [(i,list(factors(i))) for i in list(filter( f, range(2,1001)))])

以上是關於Lambda表達式的實例教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn