1. 程式人生 > >Python學習筆記7——Sorted及返回函式

Python學習筆記7——Sorted及返回函式

#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