列表生成式——可以直接在列表裡進行運算
生成器——一邊迴圈一邊計算的機制,稱為生成器:generator(就是生成乙個不執行的函式或者列表,即資料流)
第二句:生成器與列表的區別——生成器你不知道長度,就是乙個資料流;list、dict、str你知道長度
迭代器——可以被next()函式呼叫並不斷返回下乙個值的物件稱為迭代器
第二句:可迭代物件——可以直接作用於for迴圈的物件統稱為可迭代物件:iterable
第三句:生成器一定是迭代器,迭代器不一定是生成器
data = [1,2,2,34]data = [i*2 for i in data] #
直接運算
data = [i*2 if i>3 else i-1 for i in data ] #
三元運算
print(data)
第一種方法,列表推到式
data = (x for x in range(10)) #用小括號表示
print(data) #
此時只列印函式記憶體,
第二種複雜式方式
#斐波那契數列def fob(num):
a,b = 0,1
count = 0
while count < num:
count += 1
tmp = b #也可以寫成a,b=b,a+b
b = a + b
a = tmp
yield a #返回a, 同時掛起當前這個函式, a返回給了通過__next__()呼叫當前函式的人
# return a
else:print("done")
f = fob(1000000)
for i in range(10):
print(f.__next__())
>>> from collections import iterator>>> isinstance((x for x in range(10)), iterator)
true
>>> isinstance(, iterator)
false
>>> isinstance({}, iterator)
false
>>> isinstance('abc', iterator)
false
#list、dict、str雖然是iterable,卻不是iterator。通過iter()函式,可以把list、dict、str等iterable變成iterator使用>>> isinstance(iter(), iterator)
true
>>> isinstance(iter('abc'), iterator)
true
列表生成式 生成器 迭代器
1 列表生成式,可以在前邊加入表示式或者函式 a x 2 for x in range 10 print a def f n return n n n b f x for x in range 10 print b 2 a.生成器,每次使用得時候才會計算,每次只能取下乙個而不能跳躍取值.生成器就是乙...
Python 列表生成式 生成器 迭代器
常見的列表生成方式 1.list list range 1 5 1 2,3 4 2.for迴圈 l for i in range 1 5 l 1 2,3 4 3.列表生成式 在列表生成時加入限制判斷條件 例 1,2,3,4 x for x in range 1 5 可以新增限制條件 2.4 x fo...
迭代器生成器生成式
器 工具 迭代 是乙個重複的過程,但每次重複都是基於上一次的結果而來的 迭代器 就是一種不依賴於索引的取值工具 特性 1.是一種通用的迭代取值方案 2.惰性計算,節省記憶體 對於序列型別 str,list,tuple可以依賴索引來迭代取值 對於dict,set,檔案 python必須為我們提供一種不...