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}
"""

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章