2017年7月23日 星期日

[Pytrhon]Sorted_and_lambda

1. sorted用來排序,預設的情況下,如果要排序的List為數字,是從小到大排列
ex: L=[5,-12,13,9,100,0]

print(sorted(L)) # [-12,0,5,9,100]





有時後會希望可以有一特殊的規則,例如利用絕對值來排序,這時候加上一個參數abs,

print(sorted(L),key=abs) #[0,5,9,-12,13,100]

如果想要反轉輸出的lst,那另外添加一個參數reverse

print(sorted(L),reverse=True) #[100,13,9,5,0,-12]

2. lambda是匿名函數,在傳統程式語言中(C/C++/Java),如果要使用一個函式,都需要寫出一段程式,如果這段函式有呼叫兩次以上,的確有寫出來的必要,但有時候,他只需要被呼叫一次時,那這段其實佔空間了,但你又不得不寫,
以C為例,求sum的:
int sum(x,y)
{
     int retVal;
    for( i=x;i<y;i++)
       retVal=retVal+i;
        
     return retVal;
}

所以這段code就會佔住空間,然後,只被呼叫一次

為了這情況,python使用了一個關鍵字lambda的匿名函式

ex :

lambda x: x*x

這相當於
def squ(x):
  return x*x

從這兩個例子來看,其實可以明顯的發現lambda的語法,前面的x相當於def 中的squ,暫代為函式名稱,後面的x*x就是函式squ中的x*x的運算內容,說起來是這樣,簡短了寫出函式的過程,但重點是,寫法短,就是這樣,你不用另外開空間寫。



沒有留言:

張貼留言

[Python] Partial function

在Python中有許多偏函數( Partial function)可以使用,常見的就是string的轉換 ex : int('50') #50 這個例子就是把string type的50轉換成int的50,而且是10進制 那好,問題來了,能不能變成8...