python中的排序

今天在http://www.pythontip.com刷題的時候遇到一個排序的問題:一個列表中既有字符串,又有數字,該怎麼排序。python

list = [1,2,5,4,'d','s','e',45]
list.sort()

若是直接調用sort()函數則會報函數

TypeError                                 Traceback (most recent call last)
<ipython-input-9-f338e0e85925> in <module>()
----> 1 list.sort()

TypeError: '<' not supported between instances of 'str' and 'int'

我理解的是sort()函數內部是經過'<'來完成大小的比較,而'<'不支持對字符串和數字之間的的比較。ui

後來發現有個sorted()函數可解決字符串和數字一塊兒的排序問題spa

new_list = sorted(list)

sorted()跟sort()的調用方式不太同樣,sorted()是將欲排序的list做爲參數傳入,而後獲得排序後的list,而sort()是在原list的基礎上進行排序。code

sort()函數僅定義在list中,而sorted()對全部的可迭代對象都有效。對象

經過help()查看下二者區別:blog

---------------------------------sorted----------------------------------------

In [14]: help(list.sort)
Help on built-in function sort:排序

sort(...) method of builtins.list instance
L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*ip

--------------------------------sorted---------------------------------------

In [15]: 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.

升序返回一個新的列表包含全部項目的迭代。

能夠提供自定義key函數以自定義排序順序,能夠設置反向標誌以按降序返回結果。

相關文章
相關標籤/搜索