出處:
有時候處理資料時,想要按照字串中的數字的大小進行排序。
譬如,存在一組記錄檔案,分別為『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
=
lambda
i:
int
(re.match(r
'(\d+)'
,i).group()))
print
new
得到的結果即為
對於該操作,同樣可以使用list.sort(),python2.4之後,list.sort和sorted都新增了乙個key引數用來指定乙個函式
不同的地方是:內建sorted返回乙個新的列表,而list.sort是對列表進行操作12
3s
=
[
'1.dat'
,
'10.dat'
,
'5.dat'
]
s.sort(key
=
lambda
i:
int
(re.match(r
'(\d+)'
,i).group()))
print
s
出處:有時候處理資料時,想要按照字串中的數字的大小進行排序。
譬如,存在一組記錄檔案,分別為『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
=
lambda
i:
int
(re.match(r
'(\d+)'
,i).group()))
print
new
得到的結果即為
對於該操作,同樣可以使用list.sort(),python2.4之後,list.sort和sorted都新增了乙個key引數用來指定乙個函式
不同的地方是:內建sorted返回乙個新的列表,而list.sort是對列表進行操作12
3s
=
[
'1.dat'
,
'10.dat'
,
'5.dat'
]
s.sort(key
=
lambda
i:
int
(re.match(r
'(\d+)'
,i).group()))
print
s
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...