關於Python推導式 迭代器 生成器

2022-09-23 14:36:07 字數 1949 閱讀 6324

列表推導式格式為:

[表示式for變數in列表][out_exp_res forout_exp ininput_list]或者[表示式for變數in列表if條件][out_exp_res forout_exp ininput_list ifcondition]

之前看到這樣形式的**,一直不知道是叫什麼名字,以為是叫slice或者迭代式,其實標準的叫法,是叫作:推導式。

字典推導基本格式:

使用字串及其長度建立字典:

listdemo = ['google','runoob', 'taobao']

# 將列表中各字串值為鍵,各字串的長度為值,組成鍵值對

>>> newdict = 

>>> newdict

集合推導式基本格式:

計算數字 1,2,3 的平方數:

>>> setnew = 

>>> setnew

元組推導式可以利用 range 區間、元組、列表、字典和集合等資料型別,快速生成乙個滿足指定需求的元組。

元組推導式基本格式:

(expression foritem insequence)或(expression foritem insequenceifconditional )

元組推導式和列表推導式的用法也完全相同,只是元組推導式是用 () 圓括號將各部分括起來,而列表推導式用的是中括號 ,另外元組推導式返回的結果是乙個生成器物件。

迭代是python最強大的功能之一,是訪問集合元素的一種方式。

迭代器是乙個可以記住遍歷的位置的物件。

迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。

迭代器有兩個基本的方法:iter()next()

#!/usr/bin/python3

import sys # 引入 sys 模組

list=[1,2,3,4

]it =iter(list) # 建立迭代器物件

while

true:

try:

print (next(it))

except stopiteration:

sys.exit()

在 python 中,使用了 yield 的函式被稱為生成器(generator)。

跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。

在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續執行。

呼叫乙個生成器函式,返回的是乙個迭代器物件。

以下例項使用 yield 實現斐波那契數列:

#!/usr/bin/python3

import sys

def fibonacci(n): # 生成器函式 -斐波那契

a, b, counter = 0, 1, 0

while

true:

if (counter >n):

return

yield

a a, b = b, a +b

counter += 1

f = fibonacci(10

) # f 是乙個迭代器,由生成器返回生成

while

true:

try:

print (next(f), end="")

except stopiteration:

sys.exit()

執行以上程式,輸出結果如下:

011235813213455

python日誌 推導 迭代器

日誌 importlogging log format asctime s levelname s message s logging.basicconfig level logging.debug,format log format deftest try a int input 請輸入乙個被除數...

python推導式 生成器和迭代器

1 列表推導式 li page format i for i in range 1 101 print li page1 page2 page3 page4 page5 page6 page7 page8 page9 page10 page11 page12 page13 page14 page15...

python 列表推導式 生成器 迭代器

列表推導式 字典推導式和元組推導式類似 列表推導式格式 表示式 for 變數 in 可迭代 if 條件 兩個列子 乙個有if乙個沒有if list1 1,2,3 4,5,6 1,3,5 name x 2 for x in list1 結果 3,6,5 列表推導式是可以使用兩個for的 name x,...