(轉)Python3:sorted()函數及列表中的sort()函數

來源:互聯網
上載者:User

標籤:from   --   imp   ref   size   targe   tab   比較   rev   

Python3:sorted()函數及列表中的sort()函數

  • 轉載請註明作者和出處:http://blog.csdn.net/u011475210
  • 作業系統:WINDOWS 10
  • 軟體版本:python-3.6.2-amd64
  • 編??者:WordZzzz

一、sort,sorted函數介紹:

??Sort函數是list列表中的函數,而sorted可以對list或者iterator進行排序。

??下面我們使用help來查看他們的用法及功能:
sort:

>>> help(list.sort)Help on method_descriptor:sort(...)    L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
  • 1
  • 2
  • 3
  • 4
  • 5

sorted:
Python3.x:

>>> help(sorted)Help on built-in function sorted in module builtins:sorted(iterable, /, *, key=None, reverse=False)    Return a new list containing all items from the iterable in ascending order.    A custom key function can be supplied to customize the sort order, and the    reverse flag can be set to request the result in descending order.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Python2.x:

>>> help(sorted)Help on built-in function sorted in module __builtin__:sorted(...)    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
  • 1
  • 2
  • 3
  • 4
  • 5

??好吧,Python3.x和Python2.x的sorted函數有點不太一樣,少了cmp參數。下面本渣渣主要基於Python2.x的sorted函數進行講解,Python3.x直接忽略cmp這個參數即可,為了保證代碼通用性,不建議大家在今後的編程中使用cmp參數。

二、sort和sorted的比較:

??用sort函數對列表排序時會影響列表本身,而sorted不會。
舉例:

>>> a = [1,2,1,4,3,5]>>> a.sort()>>> a[1, 1, 2, 3, 4, 5]>>> a = [1,2,1,4,3,5]>>> sorted(a)[1, 1, 2, 3, 4, 5]>>> a[1, 2, 1, 4, 3, 5]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

??Python2.x的sorted函數:sorted(iterable,cmp,key,reverse)
參數:
- iterable可以是list或者iterator;
- cmp是帶兩個參數的比較函數;
- key 是帶一個參數的函數;
- reverse為False或者True;

舉例說明:
(1)用cmp函數排序:

>>> list1 = [(‘david‘, 90), (‘mary‘,90), (‘sara‘,80),(‘lily‘,95)]>>> sorted(list1,cmp = lambda x,y: cmp(x[0],y[0]))[(‘david‘, 90), (‘lily‘, 95), (‘mary‘, 90), (‘sara‘, 80)]>>> sorted(list1,cmp = lambda x,y: cmp(x[1],y[1]))[(‘sara‘, 80), (‘david‘, 90), (‘mary‘, 90), (‘lily‘, 95)]
  • 1
  • 2
  • 3
  • 4
  • 5

(2)用key函數排序:

>>> list1 = [(‘david‘, 90), (‘mary‘,90), (‘sara‘,80),(‘lily‘,95)]>>> sorted(list1,key = lambda list1: list1[0])[(‘david‘, 90), (‘lily‘, 95), (‘mary‘, 90), (‘sara‘, 80)]>>> sorted(list1,key = lambda list1: list1[1])[(‘sara‘, 80), (‘david‘, 90), (‘mary‘, 90), (‘lily‘, 95)]
  • 1
  • 2
  • 3
  • 4
  • 5

(3)用reverse排序:

>>> sorted(list1,reverse = True)[(‘sara‘, 80), (‘mary‘, 90), (‘lily‘, 95), (‘david‘, 90)]
  • 1
  • 2

(4)用operator.itemgetter函數排序:

>>> from operator import itemgetter>>> sorted(list1, key=itemgetter(1))[(‘sara‘, 80), (‘david‘, 90), (‘mary‘, 90), (‘lily‘, 95)]>>> sorted(list1, key=itemgetter(0))[(‘david‘, 90), (‘lily‘, 95), (‘mary‘, 90), (‘sara‘, 80)]
  • 1
  • 2
  • 3
  • 4
  • 5

??介紹operator.itemgetter函數:

>>> import operator>>> a = [1,2,3]>>> b = operator.itemgetter(0)>>> b(a)1
  • 1
  • 2
  • 3
  • 4
  • 5

??operator.itemgetter函數擷取的不是值,而是定義了一個函數。

(5)多級排序:

>>> sorted(list1, key=itemgetter(0,1))[(‘david‘, 90), (‘lily‘, 95), (‘mary‘, 90), (‘sara‘, 80)]

(轉)Python3:sorted()函數及列表中的sort()函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.