您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)python如何對函數(shù)中的參數(shù)進(jìn)行排序,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
內(nèi)建的 sorted() 函數(shù)可接受一個用來傳遞可調(diào)用對象( callable ) 的參數(shù) key,而該可調(diào)用對象會返回待排序?qū)ο笾械哪承┲?,sorted則利用這些值來比較對象。
例如,如果應(yīng)用中有一系列的 User 對象實例,而我們想通過 user_id 屬性來對他們排序,則可以提供一個可調(diào)用對象將 User 實例作為輸入然后返回 user_id。
class User: def __init__(self, user_id): self.user_id = user_id def __repr__(self): return 'User({})'.format(self.user_id) users = [User(23), User(3), User(99)] print(users) # [User(23), User(3), User(99)] sorted(users, key=lambda u: user_id) # [User(3), User(23), User(99)]
除了可以用 lambda 表達(dá)式外,另一種方式是使用 operator.attrgetter()
from operator import attrgetter sorted(users, key=attrgetter('user_id')) # [User(3), User(23), User(99)]
要使用 lambda 表達(dá)式還是 attrgetter() 或許只是一種個人喜好。但是通常來說,attrgetter() 要更快一些,而且允許同時提取多個字段值的能力。
這和針對字典的 operator.itemgetter() 的使用很類似。
如果 User 實例還有一個 first_name 和 last_name 屬性的話,可以執(zhí)行如下的排序操作:
by_name = sorted(users, key=attrgetter('last_name', 'first_name'))
同樣,本節(jié)所用到的技術(shù)也使用于像 min() 和 max() 這樣的函數(shù)。
min(Users, key=attrgetter('user_id')) # User(3) max(Users, key=attrgetter('user_id')) # User(99)
關(guān)于“python如何對函數(shù)中的參數(shù)進(jìn)行排序”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。