最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python sorted函數(shù)詳解(高級篇)

 更新時間:2018年09月18日 12:01:02   作者:brucewong0516  
本文我們用到了sorted 如何進行按照鍵或者值進行排序,解決了字典的排序問題。文中將進一步詳細介紹sorted的強大。希望對大家有所幫助

sorted 用于對集合進行排序(這里集合是對可迭代對象的一個統(tǒng)稱,他們可以是列表、字典、set、甚至是字符串),它的功能非常強大

1、對列表排序,返回的對象不會改變原列表

list = [1,5,7,2,4]

sorted(list)
Out[87]: [1, 2, 4, 5, 7]
#可以設定時候排序方式,默認從小到大,設定reverse = False 可以從大到小
sorted(list,reverse=False)
Out[88]: [1, 2, 4, 5, 7]

sorted(list,reverse=True)
Out[89]: [7, 5, 4, 2, 1]

2、根據(jù)自定義規(guī)則來排序,使用參數(shù):key

# 使用key,默認搭配lambda函數(shù)使用
sorted(chars,key=lambda x:len(x))
Out[92]: ['a', 'is', 'boy', 'bruce', 'handsome']

sorted(chars,key=lambda x:len(x),reverse= True)
Out[93]: ['handsome', 'bruce', 'boy', 'is', 'a']

3、根據(jù)自定義規(guī)則來排序,對元組構(gòu)成的列表進行排序

tuple_list = [('A', 1,5), ('B', 3,2), ('C', 2,6)]
#key=lambda x: x[1]中可以任意選定x中可選的位置進行排序
sorted(tuple_list, key=lambda x: x[1]) 

Out[94]: [('A', 1, 5), ('C', 2, 6), ('B', 3, 2)]

sorted(tuple_list, key=lambda x: x[0])
Out[95]: [('A', 1, 5), ('B', 3, 2), ('C', 2, 6)]

sorted(tuple_list, key=lambda x: x[2])
Out[96]: [('B', 3, 2), ('A', 1, 5), ('C', 2, 6)]

4、排序的元素是自定義類

class tuple_list:
 def __init__(self, one, two, three):
  self.one = one
  self.two = two
  self.three = three
 def __repr__(self):
  return repr((self.one, self.two, self.three))


tuple_list_ = [tuple_list('A', 1,5), tuple_list('B', 3,2), tuple_list('C', 2,6)]

sorted(tuple_list_, key=lambda x: x.one)
Out[104]: [('A', 1, 5), ('B', 3, 2), ('C', 2, 6)]

sorted(tuple_list_, key=lambda x: x.two)
Out[105]: [('A', 1, 5), ('C', 2, 6), ('B', 3, 2)]

sorted(tuple_list_, key=lambda x: x.three)
Out[106]: [('B', 3, 2), ('A', 1, 5), ('C', 2, 6)]

5、sorted 也可以根據(jù)多個字段來排序

class tuple_list:
 def __init__(self, one, two, three):
  self.one = one
  self.two = two
  self.three = three
 def __repr__(self):
  return repr((self.one, self.two, self.three))

tuple_list_ = [tuple_list('C', 1,5), tuple_list('A', 3,2), tuple_list('C', 2,6)]
# 首先根據(jù)one的位置來排序,然后根據(jù)two的位置來排序
sorted(tuple_list_, key=lambda x:(x.one, x.two))
Out[112]: [('A', 3, 2), ('C', 1, 5), ('C', 2, 6)]

6、使用operator 中的itemgetter方法和attrgetter方法

tuple_list = [('A', 1,5), ('B', 3,2), ('C', 2,6)]

class tuple_list_class:
 def __init__(self, one, two, three):
  self.one = one
  self.two = two
  self.three = three
 def __repr__(self):
  return repr((self.one, self.two, self.three))

tuple_list_ = [tuple_list_class('C', 1,5), tuple_list_class('A', 3,2), tuple_list_class('C', 2,6)]

from operator import itemgetter
sorted(tuple_list, key=itemgetter(1))

Out[119]: [('A', 1, 5), ('C', 2, 6), ('B', 3, 2)]

from operator import attrgetter
sorted(tuple_list_, key=attrgetter('one')) # attrgetter 傳入的參數(shù)必須是str

Out[120]: [('A', 3, 2), ('C', 1, 5), ('C', 2, 6)]

# 如果是根據(jù)多個類的參數(shù)排序,按照參數(shù)定義順序
from operator import attrgetter
sorted(tuple_list_, key=attrgetter('two','one'))

Out[121]: [('C', 1, 5), ('C', 2, 6), ('A', 3, 2)]

高級用法

有時候,我們要處理的數(shù)據(jù)內(nèi)的元素不是一維的,而是二維的甚至是多維的,那要怎么進行排序呢?這時候,sorted()函數(shù)內(nèi)的key參數(shù)就派上用場了!從幫助信息上可以了解到,key參數(shù)可傳入一個自定義函數(shù)。那么,該如何使用呢?讓我們看看如下代碼:

>>>l=[('a', 1), ('b', 2), ('c', 6), ('d', 4), ('e', 3)]
>>>sorted(l, key=lambda x:x[0])
Out[39]: [('a', 1), ('b', 2), ('c', 6), ('d', 4), ('e', 3)]
>>>sorted(l, key=lambda x:x[0], reverse=True)
Out[40]: [('e', 3), ('d', 4), ('c', 6), ('b', 2), ('a', 1)]
>>>sorted(l, key=lambda x:x[1])
Out[41]: [('a', 1), ('b', 2), ('e', 3), ('d', 4), ('c', 6)]
>>>sorted(l, key=lambda x:x[1], reverse=True)
Out[42]: [('c', 6), ('d', 4), ('e', 3), ('b', 2), ('a', 1)]

這里,列表里面的每一個元素都為二維元組,key參數(shù)傳入了一個lambda函數(shù)表達式,其x就代表列表里的每一個元素,然后分別利用索引返回元素內(nèi)的第一個和第二個元素,這就代表了sorted()函數(shù)利用哪一個元素進行排列。而reverse參數(shù)就如同上面講的一樣,起到逆排的作用。默認情況下,reverse參數(shù)為False。
當然,正如一開始講到的那樣,如果想要對列表直接進行排序操作,可以用成員方法sort()來做:

>>>l.sort(key=lambda x : x[1])
>>>l
Out[45]: [('a', 1), ('b', 2), ('e', 3), ('d', 4), ('c', 6)]
>>>l.sort(key=lambda x : x[1], reverse=True)
>>>l
Out[47]: [('c', 6), ('d', 4), ('e', 3), ('b', 2), ('a', 1)]

對于三維及以上的數(shù)據(jù)排排序,上述方法同樣適用。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • 降低python版本的操作方法

    降低python版本的操作方法

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于降低python版本的操作方法,需要的朋友們可以學習參考下。
    2020-09-09
  • Python編程itertools模塊處理可迭代集合相關(guān)函數(shù)

    Python編程itertools模塊處理可迭代集合相關(guān)函數(shù)

    本篇博客將為你介紹Python函數(shù)式編程itertools模塊中處理可迭代集合的相關(guān)函數(shù),有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • Python溫度轉(zhuǎn)換實例分析

    Python溫度轉(zhuǎn)換實例分析

    這篇文章主要介紹了Python溫度轉(zhuǎn)換實例分析,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python?字典(Dictionary)詳細介紹

    Python?字典(Dictionary)詳細介紹

    這篇文章主要介紹了Python?字典(Dictionary)詳細,字典是另一種可變?nèi)萜髂P?,且可存儲任意類型對象。下面和小編一起進入文章學習新內(nèi)容吧,需要的朋友可以參考一下
    2022-02-02
  • python爬蟲之基金信息存儲

    python爬蟲之基金信息存儲

    這篇文章主要介紹了python爬蟲之基金信息存儲,前面已經(jīng)講了很多次要進行數(shù)據(jù)存儲,終于在上一篇中完成了數(shù)據(jù)庫的設,在這篇文章我們就來完成數(shù)據(jù)存儲操作部分的介紹,需要的朋友可以參考一下
    2022-05-05
  • Python實現(xiàn)刪除排序數(shù)組中重復項的兩種方法示例

    Python實現(xiàn)刪除排序數(shù)組中重復項的兩種方法示例

    這篇文章主要介紹了Python實現(xiàn)刪除排序數(shù)組中重復項的兩種方法,涉及Python數(shù)組元素的遍歷、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Python圖像處理之模糊圖像判斷

    Python圖像處理之模糊圖像判斷

    這篇文章主要為大家詳細介紹了Python圖像處理中的模糊圖像判斷的實現(xiàn),文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2022-12-12
  • Python類反射機制使用實例解析

    Python類反射機制使用實例解析

    這篇文章主要介紹了Python類反射機制使用實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • 如何解決安裝python3.6.1失敗

    如何解決安裝python3.6.1失敗

    在本篇文章里小編給大家整理的是關(guān)于安裝python3.6.1失敗的解決方案,需要的讀者們可以跟著學習下。
    2020-07-07
  • Pandas0.25來了千萬別錯過這10大好用的新功能

    Pandas0.25來了千萬別錯過這10大好用的新功能

    這篇文章主要介紹了Pandas0.25來了千萬別錯過這10大好用的新功能,都有哪些新功能,文中給大家詳細介紹,需要的朋友可以參考下
    2019-08-08

最新評論

饶平县| 汶川县| 磐安县| 泸西县| 天津市| 西华县| 北辰区| 迁西县| 博客| 云安县| 通城县| 托克逊县| 饶平县| 娄烦县| 甘洛县| 文登市| 香港| 安泽县| 麻江县| 社会| 大余县| 江陵县| 渝北区| 开阳县| 华阴市| 长汀县| 南召县| 梧州市| 涟源市| 东源县| 桐柏县| 枣庄市| 梅河口市| 军事| 铜鼓县| 霞浦县| 定日县| 桃江县| 禹州市| 乐亭县| 长武县|