sorted函數(shù)python介紹如下
阿拉爾ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
sorted() 作為?Python?內(nèi)置函數(shù)之一,其功能是對(duì)序列(列表、元組、字典、集合、還包括字符串)進(jìn)行排序。
sorted() 函數(shù)的基本語法格式如下
list = sorted(iterable, key=None, reverse=False)
其中,iterable 表示指定的序列,key 參數(shù)可以自定義排序規(guī)則;reverse 參數(shù)指定以升序(False,默認(rèn))還是降序(True)進(jìn)行排序。sorted() 函數(shù)會(huì)返回一個(gè)排好序的列表。
注意,key 參數(shù)和 reverse 參數(shù)是可選參數(shù),即可以使用,也可以忽略。
演示sorted()函數(shù)的基本代碼用法:
#對(duì)列表進(jìn)行排序
a = [5,3,4,2,1]
print(sorted(a))
#對(duì)元組進(jìn)行排序
a = (5,4,3,1,2)
print(sorted(a))
#字典默認(rèn)按照key進(jìn)行排序
a = {4:1,\
5:2,\
3:3,\
2:6,\
1:8}
print(sorted(a.items()))
#對(duì)集合進(jìn)行排序
a = {1,5,3,2,4}
print(sorted(a))
#對(duì)字符串進(jìn)行排序
a = "51423"
print(sorted(a))
一、sort_values()函數(shù)用途
pandas中的sort_values()函數(shù)原理類似于SQL中的order by,可以將數(shù)據(jù)集依照某個(gè)字段中的數(shù)據(jù)進(jìn)行排序,該函數(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ù)大小排序,默認(rèn)axis=0
ascending是否按指定列的數(shù)組升序排列,默認(rèn)為True,即升序排列
inplace是否用排序后的數(shù)據(jù)集替換原來的數(shù)據(jù),默認(rèn)為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中有兩種排序方法,list內(nèi)置sort()方法或者python內(nèi)置的全局sorted()方法
二者區(qū)別為:
sort()方法對(duì)list排序會(huì)修改list本身,不會(huì)返回新list。sort()只能對(duì)list進(jìn)行排序。
sorted()方法會(huì)返回新的list,保留原來的list。sorted 可以對(duì)所有可迭代的對(duì)象進(jìn)行排序操作。
python中sort()函數(shù)用于對(duì)原列表進(jìn)行排序,如果指定參數(shù),則使用比較函數(shù)指定的比較函數(shù)。
列表有自己的sort方法,其對(duì)列表進(jìn)行原址排序,既然是原址排序,那顯然元組不可能擁有這種方法,因?yàn)樵M是不可修改的。
Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的吉多·范羅蘇姆于1990年代初設(shè)計(jì),作為一門叫做ABC語言的替代品。Python提供了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),還能簡(jiǎn)單有效地面向?qū)ο缶幊獭?/p>
1、首先我們定義一個(gè)列表輸入一串大小不一的數(shù)字。
2、可以用sort()方法對(duì)定義的列表排序,注意,sort只是對(duì)列表排序,它沒有返回一個(gè)值。
3、輸入print列表名即可得到排序后的列表數(shù)據(jù)。
4、倒序可以用這個(gè)reverse方法,把元素位置倒轉(zhuǎn)過來。
5、然后再次print列表名,這樣就會(huì)得到倒轉(zhuǎn)順序之后的列表數(shù)據(jù)。
5、如圖兩相對(duì)比即實(shí)現(xiàn)了從高到低和從低到高排序。
python有兩個(gè)內(nèi)置的函數(shù)用于實(shí)現(xiàn)排序,一個(gè)是list.sort()函數(shù),一個(gè)是sorted()函數(shù)。
區(qū)別1:list.sort()函數(shù)只能處理list類型數(shù)據(jù)的排序;sorted()則可以處理多種類型數(shù)據(jù)的排序。
區(qū)別2:list.sort()會(huì)修改原來的list為排序后的結(jié)果;sorted()不會(huì)修改原來的數(shù)據(jù),只是返回一個(gè)排序后的對(duì)象。
下面來動(dòng)手寫點(diǎn)代碼進(jìn)行測(cè)試:
list進(jìn)行簡(jiǎn)單的排序
1 a=['a','f','c','x','e']2 a.sort()3 a4 [a','c','e','f','x']
sorted()進(jìn)行簡(jiǎn)單排序
1 a=['a','f','c','x','e']2 a_new=sorted(a)3 a_new4 ['a', 'c', 'e', 'f', 'x']
list.sort()和sorted都有默認(rèn)的參數(shù)reverse,該參數(shù)的默認(rèn)值為“False”,即默認(rèn)升序排列。如果要進(jìn)行降序排列:
1 a=['a','f','c','x','e']2 a_new=sorted(a,reverse=True)3 a_new4 ['x', 'f', 'e', 'c', 'a']
對(duì)元組進(jìn)行排列,不能使用list.sort()函數(shù):
1 a=('a','f','c','x','e')2 a_new=a.sort()3
4 ttributeError: 'tuple' object has no attribute 'sort'
對(duì)字典的排序可以按照字典的key或者value進(jìn)行排序:
1 dic={"aa":11,"ff":5,"ee":22}2 printsorted(dic.keys())3 ['aa', 'ee', 'ff']
從python2.4開始list.sort()和sorted()都引入了key參數(shù)來指定一個(gè)函數(shù)進(jìn)行排序,有了key參數(shù)以后我們就可以對(duì)更加復(fù)雜的數(shù)據(jù)進(jìn)行排序 。
假如需要排序的數(shù)據(jù)為一個(gè)list,但list的每一個(gè)元素都是一個(gè)字典,排序的方法如下:
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) #按照每個(gè)字典的age的值進(jìn)行排序,字典的方法dict.get(key)將返回指定鍵的值。
#輸出結(jié)果為:[{'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) #按照每個(gè)字典的name的值進(jìn)行排序
#輸出結(jié)果為:[{'age': 5, 'name': 'bell'}, {'age': 10, 'name': 'jan'}, {'age': 1, 'name': 'jim'}, {'age': 20, 'name': 'sunny'}]
假如需要排序的數(shù)據(jù)為一個(gè)二維的list,即list的每一個(gè)元素也是一個(gè)list,方法與上面的例子類似:
a=[['100','8','30'],['200','5','50'],['300','1','20']]print sorted(a,key=lambda arg:arg[1]) #按照每個(gè)list的第1個(gè)元素進(jìn)行排序
[['300', '1', '20'], ['200', '5', '50'], ['100', '8', '30']]
前面的2個(gè)例子中,key參數(shù)的值都是函數(shù)。在sorted函數(shù)中,key參數(shù)后面的函數(shù)的參數(shù)的數(shù)量只能是一個(gè)。lambda arg:arg.get('age')是一個(gè)lambda匿名函數(shù),它是一個(gè)沒有函數(shù)名的單語句函數(shù)。冒號(hào)左邊是參數(shù),冒號(hào)右邊的返回值,返回值將被用于排序。