python 6 27 生成器 推導 二分

2021-08-21 02:40:53 字數 1221 閱讀 8201

一、二分排序

def 

ef(a):

for i in

range(1

,len(a)):

s=0h=i-1

k=a[i]

while s<=h:

n = (s + h) // 2

if k1

else:s=n+1

a.pop(i)

a.insert(s,k)

return a

print(ef([1,6

,3,66

,8,4]))

二、推導

推導式是python中很強大的、很受歡迎的特性,具有語言簡潔,速度快等優點。推導式包括:

1.列表推導式   numbers = [x for x in range(100) if x % 3 == 0]

2.字典推導式

mcase =

mcase_frequency =

3.集合推導式

squared =

推導中可以寫多個for迴圈、可以寫函式

三、生成器

test=(x for x in rang(10))

next(test)或test.__next__()

第二種方式:通過裴波那切序列講解:將print換成yield,每次生成乙個值但是呼叫方法時沒有結果

在方法內使用yield做生成器,這樣呼叫此方法時,會得出乙個結果:generator object...

然後也是可以呼叫next()每到yield時,就會停止,返回當前這個值,可以一次一次next()呼叫,看看執行過程

使用列表推導,將會一次產生所有結果:

squares = [x**2 for x in range(5)]

[0, 1, 4, 9, 16]

生成器的特點

1.語法上和函式類似:生成器函式和常規函式幾乎是一樣的。它們都是使用def語句進行定義,差別在於,生成器使用yield語句返回乙個值,而常規函式使用return語句返回乙個值

2.自動實現迭代器協議:對於生成器,python會自動實現迭代器協議,以便應用到迭代背景中(如for迴圈,sum函式)。由於生成器自動實現了迭代器協議,所以,我們可以呼叫它的next方法,並且,在沒有值可以返回的時候,生成器自動產生stopiteration異常

3.狀態掛起:生成器使用yield語句返回乙個值。yield語句掛起該生成器函式的狀態,保留足夠的資訊,以便之後從它離開的地方繼續執行

python生成器推導式

1.生成器推導式是繼列表推導式後的有一中python推導式,他比列表推導式速度更快,占用的記憶體也更少。2.使用生成器物件時,可以根據需要將他轉化為列表或者元組,也可以是喲個生成器對像 next 方法或內建函式next 進行遍歷,其具有惰性求值的特點,進行一次遍歷後便不能再次方位內部元素,即訪問一次...

python3生成器 Python3 生成器

python3 生成器 閱讀 125 發布於 2020 05 19 14 29 25 在python中,一邊迴圈一邊計算出元素的機制,稱為生成器 generator。生成器的優點 一次返回乙個結果,延遲計算。這對於大資料量處理,是個非常有用的優勢。占用記憶體量是工程師必須考慮的乙個問題。提高 可讀性...

生成器,生成器推導式和列表推導式

python社群,大部分生成器和迭代器是一種 生成器的本質是迭代器 唯一區別 生成器是我們自己用python 構建的資料結構 迭代器都是提供的,或者轉化得來的 生成器函式 生成器表示式 python提供的 yield 乙個next 對應乙個yield yield和下乙個yield中間有 的話只執行乙...