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

你可能感兴趣的:(Python)