1、習題講解:下面代碼會輸出什麼?
① f(2)
② f(3,[3,2,1])
③ f(3)python
解答:函數
解題思路——range函數spa
python range() 函數可建立一個整數列表,通常用在 for 循環中。對象
格式爲:range(start, stop[, step]) 標綠色的部分,能夠省略掉。排序
參數說明:generator
def f(x,l=[]) #定義函數;第一個參數是整型,第二個參數是list類型,l的默認值爲[]
f(2) 的輸出結果是 [0,1]it
f(3,[3,2,1]) 的輸出結果是 [3,2,1,0,1,4]io
f(3) 的輸出結果是 [0,1,4]匿名函數
2、函數的關鍵字基礎
def 定義函數
return 表明函數執行完返回的值
pass 略過
exit(1) 直接退出
示例:print 與 result 的區別
3、函數的參數
參數 *args 表明tuple類型(即:一個*表明是tuple類型)
參數 **kwargs 表明dict 字典類型(即:兩個**表明是dict類型)
4、匿名函數
匿名函數就是沒有名字的函數,爲何設置匿名函數呢?
lambda 函數是一種快速定義單行的最小函數,能夠用在任何須要函數的地方。
例如: def fun(x,y) 等同於 r = lambda x,y:x*y
return x*y
5、高階函數(用的比較多的是 sorted )
一、map(fun,list)
接收一個函數fun 和一個list,並經過函數 fun 依次做用在list的每一個元素上,獲得一個新的list並返回。
map() 函數不改變原有的list,而是返回一個新的list。
由於list能夠包含任意類型的元素,所以map函數能夠包含任意類型的list,只要fun函數能夠處理便可。
Python2 例如:
Python2 結果:
Python3 例如:
Python3 結果:
注意:Python2 與 Python3 在運行map函數時有區別 。
Python2 不須要 list() 轉換。Python3 須要list() 轉化。
Python3中不進行list轉換運行結果爲:
二、reduce(fun,list)
接收一個函數fun 和一個 list。可是函數 fun 必須是兩個參數,reduce() 對list的每一個元素反覆調用函數fun,並返回最終結果。
注意:reduce 函數 存在於Python2的全局變量中。 在Python3中,它被放置於fucntools 模塊中。
三、sorted() 函數對全部可迭代的對象進行排序操做,返回從新排序的列表。
sort 是應用在 list 上的方法,sorted 能夠對全部可迭代的對象進行排序操做。
list 的 sort 方法返回的是對已經存在的列表進行操做;
內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操做。
3.1 sorted() 函數語法
sorted(iterable, key=None, reverse=False)
3.2 參數說明
iterable -- 可迭代對象。
key -- 用來進行比較的元素,只有一個參數;具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序。
reverse -- 排序規則,reverse = True 降序 , reverse = False 升序(默認)。
3.3 示例
①:默認排序爲升序
結果
②:降序
結果
③:字典排序
結果:
6、列表生成式
格式:[exp for val n collection if condition]
例如:
結果:
7、生成器:使用了 yield 的函數被稱爲生成器(generator)
生成器是一個返回迭代器的函數,只能用於迭代操做,更簡單點理解生成器就是一個迭代器。
在調用生成器運行的過程當中,每次遇到 yield 時函數會暫停並保存當前全部的運行信息,返回 yield 的值, 並在下一次執行 迭代器 next() 方法時從當前位置繼續運行。
應用場景:只須要得到 list 中的前幾個元素,節省存儲空間。
Generator 是一種一邊循環一邊計算的機制。
示例:
結果: