函式3 生成器表示式,推導式,遞迴,其他重要函式

2021-09-27 09:32:56 字數 2505 閱讀 1773

生成器,生成器函式,推導式

特點:1.惰性

2.只能往下走

3.省記憶體

獲取生成器:

生成器函式、生成器表示式、通過資料轉化

推導式1.列表推導式 [結果 for 判斷]

2.字典推導式

3.集合推導式 : 去重複

生成器表示式

(結果 for 判斷) 「元組」

函式:1.匿名函式lambda

lambda 引數:函式reture值

2.sorted()排序函式

語法 sorted(iterable, key=none, reverse=false)

lst = ['a',"aa",'aaa','bb','bbbbb','aaaaaaaaaa']

def func():

return len(s)

ll = sorted(lst,key=func) #key 是排序方案,sorted函式內部回答可迭代物件按照每乙個元素拿出來交給後面的key

print(ll) # 後面的可以計算出乙個數字,當作當前元素的權重,整個函式根據權重進行排序

例子:(與lambda連用)

lst = [,,,]

def func(el):

return el['age']

sorted(lst,key=func)

or sorted(lst,key=lambda el: el['age'])

3.filter()

語法 filter(function(只是函式名,iterable))

#將可迭代物件傳給函式function,所有返回true的都會保留,所有返回false的都會被過濾

lst = ['張無忌','黃曉明','賈靜雯','張三丰','張正直']

def func(el):

if el[0] == "張":

return false

else:

return true

ll = filter(func, lst)

print(ll)

for i in ll:

print(i)

與lambda連用

filter(lambda el: el[0]!=『張』,lst)

print(ll)

for i in ll:

print(i)

map()對映函式

語法 map(function,iterable)

#分而治之

map(function1,map(function2,map(function3,lst)))

函式有多個引數,要乙個乙個列出來

lst1 = [1,2,5,6,8]

lst2 = [4,8,4,9,8]

map(lambda x,y:x+y,lst1,lst2) #水桶效應

5.遞迴

遞迴函式:自己呼叫自己

def func():

print('aa')

func()

func()

遞迴深度:自己呼叫自己的次數,預設1000次

二分法(必須有順序從小到大)

掐頭去尾取號中間

迴圈實現:

lst = [1, 11, 14, 15, 22, 44, 55, 151, 513, 515, 884]

n = 22

right = len(lst) - 1

lift = 0

while lift <= right:

mid = (right + lift) // 2

print('hhh')

if n >= lst[mid]:

lift = mid + 1

elif n <= lst[mid]:

right = mid - 1

else:

print("找到了")

break

else:

print('沒找到')

遞迴實現:

def func(n, lift, right):

if lift <= right:

mid = (right + lift) // 2

if lst[mid] > n:

right = mid - 1

return func(n, lift, right)

elif lst[mid] < n:

lift = mid + 1

return func(n, lift, right)

elif lst[mid] == n:

print('找到了')

return mid

else:

return -1

生成器 生成器函式 推導式 生成器表示式

一 生成器 生成器的本質就是迭代器 生成器一般由生成器函式或者生成器表示式來建立 其實就是手寫的迭代器 def func print 111 yield 222ret func print ret 因為函式中存在yield,那麼這個函式就是乙個生成器函式。這個時候我們在想執行函式就不再是執行函式了,...

推導式 與 生成器表示式

推導式 先講列表推導式,其它推導式皆與之類似.列表推導式由乙個包含表示式的中括號組成,表示式後面跟隨乙個for子句,之後可以有0個或多個for子句或if子句.由於是用中括號括起來的,所以得到的是乙個列表,它為從乙個序列中建立列表提供了乙個簡單的方法.其實,表示式就是將儲存在列表中的每一項的原型,表示...

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

生成器表示式,列表推導式 其他推導式 變數 加工後的變數 for 變數 in iterable 迴圈模式 變數 加工後的變數 for 變數 in iterable if 條件 篩選模式 優點 1,節省 一行搞定.2,看著高大上.缺點 不好排錯.整體 凡是用列表推導式構造的列表物件,用其他方式都可構建...