sorted函數(shù)python介紹如下

你所需要的網(wǎng)站建設(shè)服務,我們均能行業(yè)靠前的水平為你提供.標準是產(chǎn)品質(zhì)量的保證,主要從事網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)網(wǎng)站建設(shè)、手機網(wǎng)站制作、網(wǎng)頁設(shè)計、品牌網(wǎng)站設(shè)計、網(wǎng)頁制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)建站擁有實力堅強的技術(shù)研發(fā)團隊及素養(yǎng)的視覺設(shè)計專才。
sorted() 作為?Python?內(nèi)置函數(shù)之一,其功能是對序列(列表、元組、字典、集合、還包括字符串)進行排序。
sorted() 函數(shù)的基本語法格式如下
list = sorted(iterable, key=None, reverse=False)
其中,iterable 表示指定的序列,key 參數(shù)可以自定義排序規(guī)則;reverse 參數(shù)指定以升序(False,默認)還是降序(True)進行排序。sorted() 函數(shù)會返回一個排好序的列表。
注意,key 參數(shù)和 reverse 參數(shù)是可選參數(shù),即可以使用,也可以忽略。
演示sorted()函數(shù)的基本代碼用法:
#對列表進行排序
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))
一、sort_values()函數(shù)用途
pandas中的sort_values()函數(shù)原理類似于SQL中的order by,可以將數(shù)據(jù)集依照某個字段中的數(shù)據(jù)進行排序,該函數(shù)即可根據(jù)指定列數(shù)據(jù)也可根據(jù)指定行的數(shù)據(jù)排序。
二、sort_values()函數(shù)的具體參數(shù)
用法:
1DataFrame.sort_values(by=‘##',axis=0,ascending=True, inplace=False, na_position=‘last')
參數(shù)說明
by指定列名(axis=0或'index')或索引值(axis=1或'columns')
axis若axis=0或'index',則按照指定列中數(shù)據(jù)大小排序;若axis=1或'columns',則按照指定索引中數(shù)據(jù)大小排序,默認axis=0
ascending是否按指定列的數(shù)組升序排列,默認為True,即升序排列
inplace是否用排序后的數(shù)據(jù)集替換原來的數(shù)據(jù),默認為False,即不替換
na_position{‘first',‘last'},設(shè)定缺失值的顯示位置
三、sort_values用法舉例
創(chuàng)建數(shù)據(jù)框
#利用字典dict創(chuàng)建數(shù)據(jù)框
import numpy as np
import pandas as pd
Python中的sort()方法用于數(shù)組排序,下面以實例形式對此加以詳細說明:
一、基本形式
列表有自己的sort方法,其對列表進行原址排序,既然是原址排序,那顯然元組不可能擁有這種方法,因為元組是不可修改的。
x?=?[4,?6,?2,?1,?7,?9]x.sort()
print?x?#?[1,?2,?4,?6,?7,?9]
如果需要一個排序好的副本,同時保持原有列表不變,怎么實現(xiàn)呢
x?=[4,?6,?2,?1,?7,?9]
y?=?x[?:?]
y.sort()
print?y?#[1,?2,?4,?6,?7,?9]
print?x?#[4,?6,?2,?1,?7,?9]
注意:y = x[:] 通過分片操作將列表x的元素全部拷貝給y,如果簡單的把x賦值給y:y = x,y和x還是指向同一個列表,并沒有產(chǎn)生新的副本。
另一種獲取已排序的列表副本的方法是使用sorted函數(shù):
x?=[4,?6,?2,?1,?7,?9]
y?=?sorted(x)
print?y?#[1,?2,?4,?6,?7,?9]
print?x?#[4,?6,?2,?1,?7,?9]
sorted返回一個有序的副本,并且類型總是列表,如下:
print?sorted('Python')?#['P',?'h',?'n',?'o',?'t',?'y']
二、自定義比較函數(shù)
可以定義自己的比較函數(shù),然后通過參數(shù)傳遞給sort方法:
def?comp(x,?y):
if?x??y:
return?1
elif?x??y:
return?-1
else:
return?0
nums?=?[3,?2,?8?,0?,?1]
nums.sort(comp)
print?nums?#?降序排序[8,?3,?2,?1,?0]
nums.sort(cmp)?#?調(diào)用內(nèi)建函數(shù)cmp?,升序排序
print?nums?#?降序排序[0,?1,?2,?3,?8]
三、可選參數(shù)
sort方法還有兩個可選參數(shù):key和reverse
1、key在使用時必須提供一個排序過程總調(diào)用的函數(shù):
x?=?['mmm',?'mm',?'mm',?'m'?]
x.sort(key?=?len)
print?x?#?['m',?'mm',?'mm',?'mmm']
2、reverse實現(xiàn)降序排序,需要提供一個布爾值:
y?=?[3,?2,?8?,0?,?1]
y.sort(reverse?=?True)
print?y?#[8,?3,?2,?1,?0]
進行一個簡單的升序排列直接調(diào)用sorted()函數(shù),函數(shù)將會返回一個排序后的列表:
sorted函數(shù)不會改變原有的list,而是返回一個新的排好序的list
如果你想使用就地排序,也就是改變原list的內(nèi)容,那么可以使用list.sort()的方法,這個方法的返回值是None。
另一個區(qū)別是,list.sort()方法只是list也就是列表類型的方法,只可以在列表類型上調(diào)用。而sorted方法則是可以接受任何可迭代對象。
list.sort()和sorted()函數(shù)都有一個key參數(shù),可以用來指定一個函數(shù)來確定排序的一個優(yōu)先級。比如,這個例子就是根據(jù)大小寫的優(yōu)先級進行排序:
key參數(shù)的值應該是一個函數(shù),這個函數(shù)接受一個參數(shù)然后返回以一個key,這個key就被用作進行排序。這個方法很高效,因為對于每一個輸入的記錄只需要調(diào)用一次key函數(shù)。
一個常用的場景就是當我們需要對一個復雜對象的某些屬性進行排序時:
再如:
前面我們看到的利用key-function來自定義排序,同時Python也可以通過operator庫來自定義排序,而且通常這種方法更好理解并且效率更高。
operator庫提供了 itemgetter(), attrgetter(), and a methodcaller()三個函數(shù)
同時還支持多層排序
list.sort()和sorted()都有一個boolean類型的reverse參數(shù),可以用來指定升序和降序排列,默認為false,也就是升序排序,如果需要降序排列,則需將reverse參數(shù)指定為true。
排序的穩(wěn)定性指,有相同key值的多個記錄進行排序之后,原始的前后關(guān)系保持不變
我們可以看到python中的排序是穩(wěn)定的。
我們可以利用這個穩(wěn)定的特性來進行一些復雜的排序步驟,比如,我們將學生的數(shù)據(jù)先按成績降序然后年齡升序。當排序是穩(wěn)定的時候,我們可以先將年齡升序,再將成績降序會得到相同的結(jié)果。
傳統(tǒng)的DSU(Decorate-Sort-Undecorate)的排序方法主要有三個步驟:
因為元組是按字典序比較的,比較完grade之后,會繼續(xù)比較i。
添加index的i值不是必須的,但是添加i值有以下好處:
現(xiàn)在python3提供了key-function,所以DSU方法已經(jīng)不常用了
python2.x版本中,是利用cmp參數(shù)自定義排序。
python3.x已經(jīng)將這個方法移除了,但是我們還是有必要了解一下cmp參數(shù)
cmp參數(shù)的使用方法就是指定一個函數(shù),自定義排序的規(guī)則,和java等其他語言很類似
也可以反序排列
python3.x中可以用如下方式:
1、首先我們定義一個列表輸入一串大小不一的數(shù)字。
2、可以用sort()方法對定義的列表排序,注意,sort只是對列表排序,它沒有返回一個值。
3、輸入print列表名即可得到排序后的列表數(shù)據(jù)。
4、倒序可以用這個reverse方法,把元素位置倒轉(zhuǎn)過來。
5、然后再次print列表名,這樣就會得到倒轉(zhuǎn)順序之后的列表數(shù)據(jù)。
5、如圖兩相對比即實現(xiàn)了從高到低和從低到高排序。
本文名稱:python排序函數(shù)用法,python排序方法
文章源于:http://chinadenli.net/article29/dsgsoch.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、域名注冊、網(wǎng)站設(shè)計公司、定制開發(fā)、網(wǎng)站導航、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)