生成器,生成器函式,推導式
特點: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,看著高大上.缺點 不好排錯.整體 凡是用列表推導式構造的列表物件,用其他方式都可構建...