iter()函式用來生成迭代器
#迭代器測試
a_list = [1, 2, 3]
for i in iter(a_list):
print(i)
for i in a_list:
print(i)
range(start, stop[, step])
引數說明:
start: 計數從 start 開始。預設是從 0 開始。例如range(5)等價於range(0, 5);
stop: 計數到 stop 結束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5
step:步長,預設為1。例如:range(0, 5) 等價於 range(0, 5, 1)
range(10) # 從 0 開始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(1, 11) # 從 1 開始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range(0, 30, 5) # 步長為 5
[0, 5, 10, 15, 20, 25]
range(0, 10, 3) # 步長為 3
[0, 3, 6, 9]
range(0, -10, -1) # 負數
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
range(0)
range(1, 0)
range的步長必須是整數
,不能是小數
自定義range函式
# 自定義range函式
def frange(start, stop, step):
x = start
while x < stop:
yield x
x += step
for i in frange(1, 10 ,0.5):
print(i)
yield
yeild是乙個generator(生成器)。
yield是乙個類似return的關鍵字,只不過,帶有yield的函式,不再是乙個普通的函式,而是乙個生成器。在執行中,呼叫next()方法才開始真正執行(for迴圈自動呼叫next方法)。
yeild的作用就是把乙個函式變成generator,帶有yeild的函式不再是乙個普通的函式,python直譯器會將其視為乙個generator。
帶有yeild的函式雖然在執行流程上看起來和普通函式一樣,但實際上每執行到yeild的語句,函式就中斷,停止執行,每次中斷都會通過yeild返回乙個當前的迭代值。下次執行的時候從yeild的下一句開始執行,而函式的本地變數看起來和上一次中斷執行前是完全一致的,於是函式繼續往下執行,直到再次遇到yeild。
lambda
###**高亮
def add(x, y):
return x+y
lambda x, y: x+y
print(add(3, 4))
lambda與def的區別:
1)def建立的方法是有名稱的,而lambda沒有。
2)lambda會返回乙個函式物件,但這個物件不會賦給乙個識別符號,而def則會把函式物件賦值給乙個變數(函式名)。
3)lambda只是乙個表示式,而def則是乙個語句。
4)lambda表示式」 : 「後面,只能有乙個表示式,def則可以有多個。
5)像if或for或print等語句不能用於lambda中,def可以。
6)lambda一般用來定義簡單的函式,而def可以定義複雜的函式。
7)lambda函式不能共享給別的程式呼叫,def可以。
lambda語法格式:
lambda 變數 : 要執行的語句
函式 生成器 迭代器
1.函式 1 函式的好處就是能將固定功能的模組封裝起來,在需要多次實現這個功能的時候就呼叫函式避免 的重複書寫,過於冗長 2 傳參 依次往後放這是規定 num,args,a 2,kwargs 中間兩個交換位置不影響 位置引數 引數關鍵字引數 引數 3 返回值函式執行沒遇到return返回值一定為no...
生成器 迭代器
最近見天一直在看廖大的python教程,卻發現很多基礎看著很簡單,但卻不會應用,歸根結底還是因為理解不到位,故而又將教程學了一遍,並將自己的理解記錄一下,也方便後面查閱。由於沒有相關程式設計基礎,有些理解可能是錯的,敬請批評指正。想深入具體學習廖大部落格請移步廖雪峰的官方 有時候用迴圈生成列表太過繁...
迭代器,生成器
迭代器 生成器 生成器的第1種實現方式 列表生成式改為生成器 python中yield關鍵字 函式中如果有yield,那麼呼叫這個函式的返回值為生成器。當生成器g呼叫next方法,執行函式,知道遇到yield就停止 再執行next,從上一次停止的地方繼續執行 函式中遇return直接退出,不繼續執行...