導航:首頁 > 編程語言 > python編寫排序函數

python編寫排序函數

發布時間:2023-02-04 20:27:22

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匿名函數,它是一個沒有函數名的單語句函數。冒號左邊是參數,冒號右邊的返回值,返回值將被用於排序。

❷ Python對列表排序函數sort()和reverse()的講解

列表中的數據種類很多,有字元串,有整型,有其他列表的嵌套,還有更多的數據類型,這些數據在列表中往往是錯亂的,沒有一定的邏輯關系,但是我們在使用列表的時候往往需要按照一定的邏輯關系進行調用或檢索。下面就來看看 列表是如何排序和翻轉的 ,所謂翻轉也就是把既定列表倒序排列。

返回結果:

從上面的返回結果可以看出來,sort()函數如果遇到字元串是按照首字母順序進行排列的,如果遇到浮點型數據還是按照大小排列。

由上面的結果可以看出來,不同的數據類型是沒有辦法進行排列的。

這個方法是把原列表中的元素順序從左至右的重新存放,而不會對列表中的參數進行排序整理。如果需要對列表中的參數進行整理,就需要用到列表的另一種排序方式sort正序排序。

❸ Python3 sort()函數與sorted()函數排序

Python使用過程隨記~
sort()函數與sorted()函數的區別:
sort是list的方法,而sorted可以對所有可迭代對象進行排序(字典,元組等);
sort方法返回的是對已經存在的列表進行操作,會改變原有列表的值;而sorted是新建一個新的list,不改變原有的值。
一.list sort()方法
語法:

key:主要是用來比較的參數,指定對象中的一個對象用來進行排序。
reserve:默認值為reserve=False升序,reserve=True降序。
無返回值,通常如下:

指定列表中的元素排序來輸出:

二.sorted
語法:

iterable:可迭代對象
key:主要是用來比較的參數,指定對象中的一個對象用來進行排序。
reserve:默認值為reserve=False升序,reserve=True降序。
利用key進行倒序排序:

或者通過reserve參數,與sort()函數一致。

若列表內元素為字典/元組,還可以通過key指定來排序:

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

1、首先我們定義一個列表輸入一串大小不一的數字。

❺ python手寫排序函數 在線等

#舉個例子,冒泡排序
defsort_list(f,l):
print"befor:",l
foriinrange(len(l)):
forjinrange(i,len(l)):
ifnotf(l[j],l[i]):
l[i],l[j]=l[j],l[i]
print"sorted:",l
#function
f=lambdaa,b:a>=b
#test
l1=[3,2,1,6,4]
l2=["a","x",5,"g"]
sort_list(f,l1)
sort_list(f,l2)

#STDOUT:
"""
befor:[3,2,1,6,4]
sorted:[1,2,3,4,6]
befor:['a','x',5,'g']
sorted:[5,'a','g','x']
"""

❻ 深入理解python中的排序sort

進行一個簡單的升序排列直接調用sorted()函數,函數將會返回一個排序後的列表:

sorted函數不會改變原有的list,而是返回一個新的排好序的list

如果你想使用就地排序,也就是改變原list的內容,那麼可以使用list.sort()的方法,這個方法的返回值是None。

另一個區別是,list.sort()方法只是list也就是列表類型的方法,只可以在列表類型上調用。而sorted方法則是可以接受任何可迭代對象。

list.sort()和sorted()函數都有一個key參數,可以用來指定一個函數來確定排序的一個優先順序。比如,這個例子就是根據大小寫的優先順序進行排序:

key參數的值應該是一個函數,這個函數接受一個參數然後返回以一個key,這個key就被用作進行排序。這個方法很高效,因為對於每一個輸入的記錄只需要調用一次key函數。
一個常用的場景就是當我們需要對一個復雜對象的某些屬性進行排序時:

再如:

前面我們看到的利用key-function來自定義排序,同時Python也可以通過operator庫來自定義排序,而且通常這種方法更好理解並且效率更高。
operator庫提供了 itemgetter(), attrgetter(), and a methodcaller()三個函數

同時還支持多層排序

list.sort()和sorted()都有一個boolean類型的reverse參數,可以用來指定升序和降序排列,默認為false,也就是升序排序,如果需要降序排列,則需將reverse參數指定為true。

排序的穩定性指,有相同key值的多個記錄進行排序之後,原始的前後關系保持不變

我們可以看到python中的排序是穩定的。

我們可以利用這個穩定的特性來進行一些復雜的排序步驟,比如,我們將學生的數據先按成績降序然後年齡升序。當排序是穩定的時候,我們可以先將年齡升序,再將成績降序會得到相同的結果。

傳統的DSU(Decorate-Sort-Undecorate)的排序方法主要有三個步驟:

因為元組是按字典序比較的,比較完grade之後,會繼續比較i。
添加index的i值不是必須的,但是添加i值有以下好處:

現在python3提供了key-function,所以DSU方法已經不常用了

python2.x版本中,是利用cmp參數自定義排序。
python3.x已經將這個方法移除了,但是我們還是有必要了解一下cmp參數
cmp參數的使用方法就是指定一個函數,自定義排序的規則,和java等其他語言很類似

也可以反序排列

python3.x中可以用如下方式:

❼ python中編寫一個模塊,模塊中包含隨機生成N個元素的列表、排序列表、求最大

下面是一個 Python 模塊的例子,它包含了隨機生成 N 個元素的列表、排序列表、求最大值三個功能:

這樣,就可以使用 my_mole 模塊中的函數來生成隨機列表、排序列表、求出最大值。

❽ python字母順序排序

❾ sorted函數python

sorted函數python介紹如下

sorted() 作為Python內置函數之一,其功能是對序列(列表、元組、字典、集合、還包括字元串)進行排序。

sorted() 函數的基本語法格式如下

list = sorted(iterable, key=None, reverse=False)

其中,iterable 表示指定的序列,key 參數可以自定義排序規則;reverse 參數指定以升序(False,默認)還是降序(True)進行排序。sorted() 函數會返回一個排好序的列表。

注意,key 參數和 reverse 參數是可選參數,即可以使用,也可以忽略。

演示sorted()函數的基本代碼用法:

#對列表進行排序

a = [5,3,4,2,1]

print(sorted(a))

#對元組進行排序

a = (5,4,3,1,2)

print(sorted(a))

#字典默認按照key進行排序

a = {4:1,

5:2,

3:3,

2:6,

1:8}

print(sorted(a.items()))

#對集合進行排序

a = {1,5,3,2,4}

print(sorted(a))

#對字元串進行排序

a = "51423"

print(sorted(a))

❿ python 中sort—values函數

一、sort_values()函數用途

pandas中的sort_values()函數原理類似於SQL中的order by,可以將數據集依照某個欄位中的數據進行排序,該函數即可根據指定列數據也可根據指定行的數據排序。

二、sort_values()函數的具體參數

用法:

1DataFrame.sort_values(by=『##',axis=0,ascending=True, inplace=False, na_position=『last')

參數說明

by指定列名(axis=0或'index')或索引值(axis=1或'columns')

axis若axis=0或'index',則按照指定列中數據大小排序;若axis=1或'columns',則按照指定索引中數據大小排序,默認axis=0

ascending是否按指定列的數組升序排列,默認為True,即升序排列

inplace是否用排序後的數據集替換原來的數據,默認為False,即不替換

na_position{『first',『last'},設定缺失值的顯示位置

三、sort_values用法舉例

創建數據框

#利用字典dict創建數據框

import numpy as np

import pandas as pd

閱讀全文

與python編寫排序函數相關的資料

熱點內容
表格加密設置列印區域 瀏覽:437
卡耐基pdf下載 瀏覽:922
現在最流行的單片機 瀏覽:88
機頂盒刷機源碼 瀏覽:985
編碼pdf下載 瀏覽:944
隔壁同學app怎麼 瀏覽:299
c語言宏命令 瀏覽:542
php卡死源碼 瀏覽:574
time庫中的clock函數python 瀏覽:989
cad視覺移動命令怎麼打開 瀏覽:821
安卓java調用python 瀏覽:395
java標准時間 瀏覽:137
華為伺服器湖北渠道商雲主機 瀏覽:30
韓式面部護理解壓視頻 瀏覽:301
pdf換成jpg圖片 瀏覽:897
dh加密演算法 瀏覽:107
安卓手機如何隱藏微信信息提示 瀏覽:632
nodejs解壓縮 瀏覽:262
直流雙轉子壓縮機 瀏覽:952
pythonxmlstring 瀏覽:822