Python 列表中字串按照某種規則排序的方法

2022-06-06 17:33:14 字數 3053 閱讀 2896

出處:

有時候處理資料時,想要按照字串中的數字的大小進行排序。

譬如,存在一組記錄檔案,分別為『1.dat』,'2.dat'...

當我把該資料夾中的所有記錄檔名讀到乙個列表中,這些字串的排列方式為:

如何讓這些字串按照數字排列?

1、首先通過正規表示式,提取出字串中的數字

2、排序,選擇built-in函式sorted進行排序

sorted(iterable, cmp=none, key=none, reverse=false)

iterable:是可迭代型別;

cmp:用於比較的函式,比較什麼由key決定;

key:用列表元素的某個屬性或函式進行作為關鍵字,有預設值,迭代集合中的一項;

reverse:排序規則. reverse = true  降序 或者 reverse = false 公升序,有預設值。

返回值:是乙個經過排序的可迭代型別,與iterable一樣。

所以說排序方式按照數字拍的話,key就要對應裡面的數字。

所以,這個問題只需一句話解決:12

3s=['1.dat','10.dat','5.dat']

new=sorted(s,key=lambdai:int(re.match(r'(\d+)',i).group()))

printnew

得到的結果即為

對於該操作,同樣可以使用list.sort(),python2.4之後,list.sort和sorted都新增了乙個key引數用來指定乙個函式

不同的地方是:內建sorted返回乙個新的列表,而list.sort是對列表進行操作12

3s=['1.dat','10.dat','5.dat']

s.sort(key=lambdai:int(re.match(r'(\d+)',i).group()))

prints

出處:有時候處理資料時,想要按照字串中的數字的大小進行排序。

譬如,存在一組記錄檔案,分別為『1.dat』,'2.dat'...

當我把該資料夾中的所有記錄檔名讀到乙個列表中,這些字串的排列方式為:

如何讓這些字串按照數字排列?

1、首先通過正規表示式,提取出字串中的數字

2、排序,選擇built-in函式sorted進行排序

sorted(iterable, cmp=none, key=none, reverse=false)

iterable:是可迭代型別;

cmp:用於比較的函式,比較什麼由key決定;

key:用列表元素的某個屬性或函式進行作為關鍵字,有預設值,迭代集合中的一項;

reverse:排序規則. reverse = true  降序 或者 reverse = false 公升序,有預設值。

返回值:是乙個經過排序的可迭代型別,與iterable一樣。

所以說排序方式按照數字拍的話,key就要對應裡面的數字。

所以,這個問題只需一句話解決:12

3s=['1.dat','10.dat','5.dat']

new=sorted(s,key=lambdai:int(re.match(r'(\d+)',i).group()))

printnew

得到的結果即為

對於該操作,同樣可以使用list.sort(),python2.4之後,list.sort和sorted都新增了乙個key引數用來指定乙個函式

不同的地方是:內建sorted返回乙個新的列表,而list.sort是對列表進行操作12

3s=['1.dat','10.dat','5.dat']

s.sort(key=lambdai:int(re.match(r'(\d+)',i).group()))

prints

Python 字串轉列表,列表轉字串

一般計算字串的數量,用len 方法就能實現,例如 str string len str 6 s,t,r,i,n,g 但是,當要計算單詞的數量時,該怎麼辦?sentence hello world and python len sentence 24 問題 一段訊息裡面的單詞數計數。寫乙個函式,當單詞...

Python中字串與列表轉換及字串打散組合

在python中經常會遇到列表中元素轉換為字串,字串轉換為列表,將字串打散的等問題。下面依次說下我的做法 1.讀入整數 在做一些oj時,經常碰到讀取輸入的整數,如果是讀入單個整數,可以用 x input 這樣x返回的結果就是整數,無需轉換,但如果輸入是 123 456 78 這樣的,光靠input ...

python列表 元組 字串

python中列表 元組 字串均為可迭代物件 lst 1 2,3 4 for i in lst print i,end print tu 1 2,3 4 for i in tu print i,end print str 1234 for i in str print i,end print 1 2...