#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