本文目錄一覽:
- 1、python如何對一組數排序
- 2、深入理解python中的排序sort
- 3、Python對數據進行排序-中英文
- 4、python中怎麼讓前5個升序,後五個降序,派Python中輸入十個數字,怎麼讓前五個升序?
- 5、用python對10個數進行排序
python如何對一組數排序
python對一組數排序的方法:
1、使用sorted()方法可以進行升序排序
2、可以operator模塊方法進行多級排序
operator 模塊方法允許多級排序。例如,可以先按 grade 排序,然後再按 age 排序
更多Python知識,請關註:Python自學網!!
深入理解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對數據進行排序-中英文
sort_values(by,axis=0,ascending=True,inplace=False,kind=’quicksort’,na_position=’last’)
參數說明:
by: 可以填入字符串或者字符串組成的列表。也就是說, 如果axis=0,那麼by=”列名”;如果axis=1,那麼by=”行名”。
axis: {0 or 『index』, 1 or 『columns』}, default 0,意思就是如果 axis=0,就按照索引排序,即縱向排序;如果axis=1,則按列排序,即橫向排序。默認是axis=0 。
ascending: 輸入布爾型, True是升序 , False是降序 ,也可以可以是[True,False],即第一個字段升序,第二個字段降序 。
inplace : 輸入布爾型,是否用排序後的數據框替換現有的數據框
kind: 排序的方法,{『quicksort』, 『mergesort』, 『heapsort』},默認是使用『quicksort』。這個參數用的比較少,大家可以試一試。
na_position : {『first』, 『last』}, 缺失值的排序 ,也就說決定將缺失值放在數據的最前面還是最後面 。first是排在前面,last是排在後面,默認是用last 。
例子:
scores= pd.DataFrame([[87,56,85],[46,87,97],[34,65,86]],columns=[‘jack’, ‘rose’, ‘mike’])
scores
1.對『rose』這一列進行降序排序:
df_sc=scores.sort_values(by=’rose’,ascending=False)
df_sc
2.對第0行進行升序排序:
scores.sort_values(by=0,axis=1,ascending=True)
3.第1行進行升序,第0行進行降序:
scores.sort_values(by=[1,0],axis=1,ascending=[True,False]
4.觀察數據
data.head:
查看數據的前五行。
data.tail:
查看數據的後五行。
data.shape :
查看矩陣或數組的維數,或者是說數據表的結構(有幾行幾列)。
data.info :
查看數據的基本信息,如:數據類型、缺失值數量等。
#brand目標:中文-中英-英文
2.1 包含中文,純英文
for i in range(0,len(file1)):
result = re.compile(u'[\u4e00-\u9fa5]’)
contents = file1[‘brand’][i]
match = result.search(contents)
if match:
file1.loc[i,[‘index1’]]=0 #0為包含中文
else:
file1.loc[i,[‘index1’]]=1 #1為純英文
2.1 包含英文,純中文
for i in range(0,len(file1)):
file1.loc[i,[‘index2’]]=len(re.findall(‘[a-zA-Z]+’, file1[‘brand’][i]) ) #0為純中文,1為包含英文
python中怎麼讓前5個升序,後五個降序,派Python中輸入十個數字,怎麼讓前五個升序?
分成兩個列表分別排序,代碼如下:
s = input().split()
l1 = [ int(x) for x in s[:5] ] # 前5個數字
l2 = [ int(x) for x in s[-5:] ] # 後5個數字
l1.sort() # 前5個數字升序
l2.sort(reverse=True) # 後5個數字降序
print(l1 + l2)
運行結果如下:
輸出符合題意,望採納~
用python對10個數進行排序
sort_values(by, axis=0, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’)
by: 可以填入字符串或者字符串組成的列表。也就是說,如果axis=0,那麼by=”列名”;如果axis=1,那麼by=”行名”。
axis: {0 or 『index』, 1 or 『columns』}, default 0,意思就是如果axis=0,就按照索引排序,即縱向排序;如果axis=1,則按列排序,即橫向排序。默認是axis=0。
ascending: 輸入布爾型,True是升序,False是降序,也可以可以是[True,False],即第一個字段升序,第二個字段降序 。
inplace: 輸入布爾型,是否用排序後的數據框替換現有的數據框(這個在之前的文章寫過很多次了~)
kind: 排序的方法,{『quicksort』, 『mergesort』, 『heapsort』},默認是使用『quicksort』。這個參數用的比較少,大家可以試一試。
na_position : {『first』, 『last』},缺失值的排序,也就說決定將缺失值放在數據的最前面還是最後面。first是排在前面,last是排在後面,默認是用last。
創建數據表:
scores= pd.DataFrame([[87,56,85],[46,87,97],[34,65,86]],
columns=[‘jack’, ‘rose’, ‘mike’])
scores
『rose』這一列進行降序排序:
df_sc=scores.sort_values(by=’rose’,ascending=False)
df_sc
『mike』這一列進行升序排序:
df_sc=scores.sort_values(by=’mike’,ascending=True)
df_sc
對第0行進行升序排序:
scores.sort_values(by=0,axis=1,ascending=True)
我們再嘗試對第1行進行升序,第0行進行降序:
scores.sort_values(by=[1,0],axis=1,ascending=[True,False]
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/249649.html