Python2.7:sorted 與 sort 的使用及區別

#!/usr/bin/env python
# -*- coding: utf-8 -*-

############################################################
# sorted 與 sort 區別
#
# sorted():用於任意的可迭代對象,例如字符串,元組,列表,字典等。
# sorted(iterable, cmp=None, key=None, reverse=False)
#       iterable 參數:指可以迭代的對象;
#       cmp 參數:指比較函數,通常爲lambda 函數;
#       key 參數:指用於比較的關鍵字,通常爲lambda 函數;
#       reverse 參數:指排序結果是否反轉。
#   該函數返回一個排序後的列表,原有可迭代對象保持不變
#
# sort():只適用於列表
# L.sort(cmp=None, key=None, reverse=False)
#       cmp 參數:指比較函數,通常爲lambda 函數;
#       key 參數:指用於比較的關鍵字,通常爲lambda 函數;
#       reverse 參數:指排序結果是否反轉。
#
# cmp 在排序過程中多次調用,所以函數調用開銷較大,使用key效率較高
############################################################

E = {'1': 'a', '2': 'b', '0': 'c'}
print sorted(E)
print sorted(E.items())
loan_list = [
    {"handler": 'ZY', 'rank': 2},
    {"handler": 'YAM', 'rank': 1},
    {"handler": 'HC', 'rank': 3},
]
print loan_list
print sorted(loan_list, key=lambda x : x['rank'])
print loan_list

student = [['tom', 'A', 20], ['jack', 'C', 18], ['andy', 'B', 11]]
student.sort(key=lambda x: x[2])
print student
student.sort(cmp=lambda x, y: x[2]-y[2])
print student

# 運行結果:
# ['0', '1', '2']
# [('0', 'c'), ('1', 'a'), ('2', 'b')]
# [{'handler': 'ZY', 'rank': 2}, {'handler': 'YAM', 'rank': 1}, {'handler': 'HC', 'rank': 3}]
# [{'handler': 'YAM', 'rank': 1}, {'handler': 'ZY', 'rank': 2}, {'handler': 'HC', 'rank': 3}]
# [{'handler': 'ZY', 'rank': 2}, {'handler': 'YAM', 'rank': 1}, {'handler': 'HC', 'rank': 3}]
# [['andy', 'B', 11], ['jack', 'C', 18], ['tom', 'A', 20]]
# [['andy', 'B', 11], ['jack', 'C', 18], ['tom', 'A', 20]]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章