列表生成式 生成器 迭代器

2022-05-07 01:06:09 字數 1490 閱讀 5188

列表生成式——可以直接在列表裡進行運算

生成器——一邊迴圈一邊計算的機制,稱為生成器: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必須為我們提供一種不...