Python學習筆記7——Sorted及返回函式
阿新 • • 發佈:2019-02-09
#sorted函式可直接用於對list進行排序,同時還可以接收一個key函式用來對list進行自定義的排序
#比如按照絕對值排序
sorted(range(-5,5),key=abs)
#忽略大小寫對字串列表進行排序
sorted(['Abd','asdf','fd','zdfe','fdZ','Fe','Sd','FB','ew','Gr'],key=str.upper)
#反向排序(倒敘),僅需要在排序函式中加入 reverse=True便可
sorted(['Abd','asdf','fd','zdfe','fdZ','Fe','Sd','FB','ew','Gr'],key=str.upper, reverse=True)
#對進行排序
#根據姓名進行排序
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_name(t):
return t[0].upper()
print(sorted(L,key=by_name))
#根據成績由高到低排序
def by_score(t):
return -t[1]
print(sorted(L,key=by_score))
#函式既可以返回計算結果,也可以返回計算函式
#返回一個函式時,該函式並未執行,返回函式中也不能引用任何可能會變化的變數,若一定要引用可能會變化的變數,那麼需要建立一個函式,用該函式的引數來繫結可變變數當前的值
def count():
def f(i): #通過引數繫結可變變數當前值
return i*i
fs=[]
for i in range(1,4):#i為可變變數
fs.append(f(i))
return fs
f1,f2,f3 = count()
print(f1,f2,f3)
#利用閉包返回一個計數器函式,每次呼叫它返回遞增整數:
#需要注意:內部函式一般無法修改外部函式的引數;若非要修改則需在內部函式中用nonlocal宣告;內部函式可以修改外部list的元素
def createCounter():
num = 0
def counter():
nonlocal num
num+=1
return num
return counter