導航:首頁 > 編程語言 > python排序不用sort

python排序不用sort

發布時間:2022-09-04 18:01:12

1. python中對組合數據類型x進行排序的內置函數是

python有兩個內置的函數用於實現排序,一個是list.sort()函數,一個是sorted()函數。
區別1:list.sort()函數只能處理list類型數據的排序;sorted()則可以處理多種類型數據的排序。
區別2:list.sort()會修改原來的list為排序後的結果;sorted()不會修改原來的數據,只是返回一個排序後的對象。
下面來動手寫點代碼進行測試:
list進行簡單的排序
1 >>>a=['a','f','c','x','e']2 >>>a.sort()3 >>>a4 [a','c','e','f','x']
sorted()進行簡單排序
1 >>>a=['a','f','c','x','e']2 >>>a_new=sorted(a)3 >>>a_new4 ['a', 'c', 'e', 'f', 'x']
list.sort()和sorted都有默認的參數reverse,該參數的默認值為「False」,即默認升序排列。如果要進行降序排列:
1 >>>a=['a','f','c','x','e']2 >>>a_new=sorted(a,reverse=True)3 >>>a_new4 ['x', 'f', 'e', 'c', 'a']
對元組進行排列,不能使用list.sort()函數:
1 >>>a=('a','f','c','x','e')2 >>>a_new=a.sort()3
4 ttributeError: 'tuple' object has no attribute 'sort'
對字典的排序可以按照字典的key或者value進行排序:
1 >>>dic={"aa":11,"ff":5,"ee":22}2 >>>printsorted(dic.keys())3 ['aa', 'ee', 'ff']
從python2.4開始list.sort()和sorted()都引入了key參數來指定一個函數進行排序,有了key參數以後我們就可以對更加復雜的數據進行排序 。
假如需要排序的數據為一個list,但list的每一個元素都是一個字典,排序的方法如下:
>>>dic=[{"name":"sunny","age":20},
{"name":"bell","age":5},
{"name":"jim","age":1},
{"name":"jan","age":10}]>>>print sorted(dic,key=lambda arg:arg.get('age'),reverse=False) #按照每個字典的age的值進行排序,字典的方法dict.get(key)將返回指定鍵的值。
#輸出結果為:[{'age': 1, 'name': 'jim'}, {'age': 5, 'name': 'bell'}, {'age': 10, 'name': 'jan'}, {'age': 20, 'name': 'sunny'}]
>>>print sorted(dic,key=lambda arg:arg.get('name'),reverse=False) #按照每個字典的name的值進行排序
#輸出結果為:[{'age': 5, 'name': 'bell'}, {'age': 10, 'name': 'jan'}, {'age': 1, 'name': 'jim'}, {'age': 20, 'name': 'sunny'}]
假如需要排序的數據為一個二維的list,即list的每一個元素也是一個list,方法與上面的例子類似:
>>>a=[['100','8','30'],['200','5','50'],['300','1','20']]>>>print sorted(a,key=lambda arg:arg[1]) #按照每個list的第1個元素進行排序
[['300', '1', '20'], ['200', '5', '50'], ['100', '8', '30']]
前面的2個例子中,key參數的值都是函數。在sorted函數中,key參數後面的函數的參數的數量只能是一個。lambda arg:arg.get('age')是一個lambda匿名函數,它是一個沒有函數名的單語句函數。冒號左邊是參數,冒號右邊的返回值,返回值將被用於排序。

2. Python學習小技巧之列表項的排序

Python學習小技巧之列表項的排序
本文介紹的是關於Python列表項排序的相關內容,分享出來供大家參考學習,下面來看看詳細的介紹:

典型代碼1:
data_list = [6, 9, 1, 3, 0, 10, 100, -100]
data_list.sort()
print(data_list)

輸出1:
[-100, 0, 1, 3, 6, 9, 10, 100]

典型代碼2:

data_list = [6, 9, 1, 3, 0, 10, 100, -100]
data_list_ = sorted(data_list)
print(data_list)
print(data_list_)

輸出2:
[6, 9, 1, 3, 0, 10, 100, -100]
[-100, 0, 1, 3, 6, 9, 10, 100]

應用場景

需要對列表中的項進行排序時使用。其中典型代碼1是使用的列表自身的一個排序方法sort,這個方法自動按照升序排序,並且是原地排序,被排序的列表本身會被修改;典型代碼2是調用的內置函數sort,會產生一個新的經過排序後的列表對象,原列表不受影響。這兩種方式接受的參數幾乎是一樣的,他們都接受一個key參數,這個參數用來指定用對象的哪一部分為排序的依據:
data_list = [(0, 100), (77, 34), (55, 97)]
data_list.sort(key=lambda x: x[1]) # 我們想要基於列表項的第二個數進行排序
print(data_list)

>>> [(77, 34), (55, 97), (0, 100)]

另外一個經常使用的參數是reverse,用來指定是否按照倒序排序,默認為False:
data_list = [(0, 100), (77, 34), (55, 97)]
data_list.sort(key=lambda x: x[1], reverse=True) # 我們想要基於列表項的第二個數進行排序,並倒序
print(data_list)
>>> [(0, 100), (55, 97), (77, 34)]

帶來的好處

1. 內置的排序方法,執行效率高,表達能力強,使代碼更加緊湊,已讀

2. 靈活的參數,用於指定排序的基準,比在類似於Java的語言中需要寫一個comparator要方便很多

其它說明

1. sorted內置函數比列表的sort方法要適用范圍更廣泛,它可以對除列表之外的可迭代數據結構進行排序;

2. list內置的sort方法,屬於原地排序,理論上能夠節省內存的消耗;

總結

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助

3. python 排序,sort和sorted的區別是什麼

Python list內置sort()方法用來排序,也可以用python內置的全局sorted()方法來對可迭代的序列排序生成新的序列。

sorted(iterable,key=None,reverse=False),返回新的列表,對所有可迭代的對象均有效

sort(key=None,reverse=False) 就地改變列表 reverse:True反序;False 正序

4. python里集合無序,為什麼列表進行升序排列後不能直接轉化成集合就因為集合是無序的嗎

set()需要一個可迭代的對象作為參數,而列表的sort方法是在原列表上進行的排序,它的返回值是None。
應該這樣做:
nums.sort()
print(set(nums))

5. 請教如何用python按字母順序排序英文名字但是不可以用sort函數

代碼如下:

list = ['banana', 'apple', 'orange', 'blueberry', 'watermelon', 'strawberry', 'mango']

print(list)

list.sort()#根據字母順序排序

print(list)#['apple', 'banana', 'blueberry', 'mango', 'orange', 'strawberry', 'watermelon']

list.sort(reverse = True) #根據字母相反順序排序

print(str(list) + " ")#['watermelon', 'strawberry', 'orange', 'mango', 'blueberry', 'banana', 'apple']

(5)python排序不用sort擴展閱讀

sorted()函數四種重要的特性:

1、sorted()函數不需要定義。它是一個內置函數,可以在標準的Python安裝中使用。

2、在沒有額外的參數的情況下,sorted()函數按照升序對值進行排列,也就是按照從小到大的順序。

3、原始的numbers不會改變,因為sorted()函數提供了一個新的有序的輸出結果,並且不改變原始值的順序。

4、當sorted()函數被調用時,它會提供一個有序的列表作為返回值。

最後一點意味著列表可以使用sorted()函數,並且輸出結果可以立刻賦值給一個變數。

6. Python中對列表進行排序的方法有哪些呢

python中有兩種排序方法,list內置sort()方法或者python內置的全局sorted()方法
二者區別為:
sort()方法對list排序會修改list本身,不會返回新list。sort()只能對list進行排序。
sorted()方法會返回新的list,保留原來的list。sorted 可以對所有可迭代的對象進行排序操作。

7. Python中既然有了sort()可以排序,那還有必要實現其他排序演算法嗎例如堆排序,快速排序

肯定有必要的,sort是基於快速排序,但我們編程的時候不單單要會用,而且要知道原理
此外,有些情況下冒泡、選擇排序的時間復雜度也不差,而且實現簡單,更適用於一些小數據量的情況,這時候這些排序反而有優勢
而且有時候數據結構不一定是整型等, 是我們自定義的類型,要對其中的某個成員變數排序,知道原理就更容易理解

8. python中,如圖,排序sort為啥不用賦值給一個中間變數就能打出來下面語句為啥又不行

list 的 sort 方法返回的是對已經存在的列表進行操作,無返回值。
所以不需要創建變數接收。
你也可以理解為sort()改變的原來的列表,不會產生新的列表。

9. 怎樣用python將數組里的數從高到低排序

1、首先我們定義一個列表輸入一串大小不一的數字。
2、可以用sort()方法對定義的列表排序,注意,sort只是對列表排序,它沒有返回一個值。
3、輸入print列表名即可得到排序後的列表數據。
4、倒序可以用這個reverse方法,把元素位置倒轉過來。
5、然後再次print列表名,這樣就會得到倒轉順序之後的列表數據。
5、如圖兩相對比即實現了從高到低和從低到高排序。

閱讀全文

與python排序不用sort相關的資料

熱點內容
機票php源碼 瀏覽:231
linux共享mac 瀏覽:922
中國沒有國外的伺服器地址 瀏覽:757
為什麼退款伺服器連接錯誤 瀏覽:555
android簡訊存儲位置 瀏覽:970
unix網路編程卷4 瀏覽:808
找靚機app下單什麼時候發貨 瀏覽:413
android一個應用兩個進程 瀏覽:802
linux硬碟復制 瀏覽:808
php圖片伺服器搭建 瀏覽:801
下載壓縮文件怎麼打開 瀏覽:194
新建文件夾叫什麼名字 瀏覽:567
windows20的開機命令 瀏覽:334
微信一般在電腦的那個文件夾 瀏覽:511
go在win7下編譯特別慢 瀏覽:256
光遇ios耳機安卓為什麼沒有 瀏覽:904
小米手機桌面文件夾經常自動散開 瀏覽:607
小米電話手錶用什麼app進行設置 瀏覽:265
虛擬列印機pdf下載 瀏覽:671
jdk編譯運行方法 瀏覽:459