1. 程式人生 > >11月6日排序函式,匿名函式,回撥函式,遞迴函式, zip函式

11月6日排序函式,匿名函式,回撥函式,遞迴函式, zip函式


#####
排序sort, sorted的區別:
list.sort(func=None, key=None, reverse=False(or True))
對於reverse這個bool型別引數,當reverse=False時:為正向排序;當reverse=True時:為方向排序。預設為False。
執行完後會改變原來的list,如果你不需要原來的list,這種效率稍微高點
>>> list = [2,8,4,6,9,1,3]
>>> list.sort()
>>> list
[1, 2, 3, 4, 6, 8, 9]

第二種:內建函式sorted()
這個和第一種的差別之處在於:
sorted()不會改變原來的list,而是會返回一個新的已經排序好的list
list.sort()方法僅僅被list所定義,sorted()可用於任何一個可迭代物件
該函式也含有reverse這個bool型別的引數,當reverse=False時:為正向排序(從小到大);當reverse=True時:為反向排序(從大到小)。當然預設為False。
>>> list = [2,8,4,1,5,7,3]
>>> other = sorted(list)
>>> other
[1, 2, 3, 4, 5, 7, 8]
#####

匿名函式:lambda
回撥函式: callback


遞迴函式:在函式內部,可以呼叫其他函式。如果一個函式在內部呼叫自身本身,這個函式就是遞迴函式。
函式的呼叫通過棧(stack)這種資料結構實現的,每當進入一個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位,解決遞迴呼叫棧溢位的方法是通過尾遞迴優化,
尾遞迴是指,在函式返回的時候,呼叫自身本身,並且,return語句不能包含表示式。這樣,編譯器或者直譯器就可以把尾遞迴做優化,使遞迴本身無論呼叫多少次,都只佔用一個棧幀,不會出現棧溢位的情況。
棧溢位就是緩衝區溢位的一種

zip函式是將兩個列表轉換為字典的形式:
keys = ['a', 'b', 'c']
values = [1, 2, 3]
dictionary = dict(zip(keys, values))
print(dictionary)
"""
輸出:
{'a': 1, 'c': 3, 'b': 2}
"""