Python常見問題答疑(一)

Q:什麼是lambda函數?它有什麼好處?

A:lambda 函數是一個可以接收任意多個參數(包括可選參數)並且返回單個表達式值的函數,它一般很短並且沒有函數名。

     1、lambda函數比較輕便,即用即扔,很適合需要完成一次性的功能,連名字都不需要起;

     2、匿名函數,一般用於filter(),map()等接收函數作爲參數的函數;

     3、作爲回調函數,傳遞給某些應用,比如消息處理。

 

python官方文檔原文:https://docs.python.org/3/reference/expressions.html?highlight=lambda#grammar-token-lambda-expr

 

Q:filter()、map()、reduce()函數的區別和作用?

A:

filter() 函數:

用於過濾序列,過濾掉不符合條件的元素,返回一個迭代器對象,如果要轉換爲列表,可以使用 list() 來轉換。

該接收兩個參數,第一個爲函數,第二個爲序列,函數即是用於過濾的條件,返回值是布爾值。序列的每個元素作爲參數傳遞給函數進行判,然後根據返回值將返回 True 的元素放到新列表中。

map() 函數:

會根據提供的函數對指定序列做映射處理,相當於對每個元素都調用一次該函數。

第一個參數 function 以參數序列中的每一個元素調用 function 函數,返回包含每次 function 函數返回值的新列表。

適合於使用重複操作批量處理數據。

reduce() 函數:

對參數序列中元素進行累積,用於數學中的累加/累乘或者類似的累計操作。

函數將一個數據集合(鏈表,元組等)中的所有數據進行下列操作:用傳給 reduce 中的函數 function(有兩個參數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第3個數據用 function 函數運算,以此類推,直到最後一個數據參與運算得到結果。

對於一個列表只會返回最後得到的累計結果。

(在 Python3 中,reduce() 函數已經被從全局名字空間裏移除了,它現在被放置在 fucntools 模塊裏,如果想要使用它,則需要通過引入 functools 模塊來調用 reduce() 函數)

 

python官方文檔原文:https://docs.python.org/3/library/functions.html

 

Q:xrange()函數和range()函數的區別?

A:xrange() 函數用法與 range 完全相同,所不同的是生成的不是一個數組,而是一個生成器。

生成器是迭代器的一種。

range() 函數用法:以給出的範圍創建一個整數列表,一般用在 for 循環中。有兩個參數和一個可選參數,分別是開始、結尾和跳步數

python官方文檔原文:https://docs.python.org/3/reference/expressions.html?highlight=generator#grammar-token-generator-expression

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章