python字元串排序函數
① python中,sort()函數用來排序,但是如果被排的序列中既有數字,又有字母怎麼排。
1,3,a 主要根據asc碼排序,1和3屬於int類型,a屬於str類型,i的asc碼在s前面,所以先排數字,然後1排在3前面沒有什麼疑問了吧。
② python如何對字元串進行排序
可以用sorted函數
③ python實現字元串列表排序
a = ['b', 'a', 'c', 'ab', 'aa', 'aaa']
a.sort(key=lambda x: str(len(x)) + x)
print(a)
#['a', 'b', 'c', 'aa', 'ab', 'aaa']
④ python手寫排序函數 在線等
#舉個例子,冒泡排序
defsort_list(f,l):
print"befor:",l
foriinrange(len(l)):
forjinrange(i,len(l)):
ifnotf(l[j],l[i]):
l[i],l[j]=l[j],l[i]
print"sorted:",l
#function
f=lambdaa,b:a>=b
#test
l1=[3,2,1,6,4]
l2=["a","x",5,"g"]
sort_list(f,l1)
sort_list(f,l2)
#STDOUT:
"""
befor:[3,2,1,6,4]
sorted:[1,2,3,4,6]
befor:['a','x',5,'g']
sorted:[5,'a','g','x']
"""
⑤ python 字元串列表中根據字元串內的數字進行排序。
你的列表A現在不就是按所含數字從大到小排列的嗎?
不過,我還是用正則表達式的方法幫你排了一下序,如果你要數字從小到大排序,只要把alist.sort(key=sort_key,reverse=True)改成alist.sort(key=sort_key,reverse=False)就行了.
完整的Python程序如下
importre
defsort_key(s):
ifs:
try:
c=re.findall('d+$',s)[0]
except:
c=-1
returnint(c)
defstrsort(alist):
alist.sort(key=sort_key,reverse=True)
returnalist
A=['abc15','abd13','abe9','abf6','abg2']
print(strsort(A))
⑥ python輸入一個字元串,求出該字元串包含的字元串包含的字元集合並按順序排序
咨詢記錄 · 回答於2022-01-01
⑦ python字元串排序問題
def char_cmp(a, b):
#實現你的比較規則, 分太少,不值為你寫這個函數
sorted(a, char_cmp)
⑧ python數據同時排序
Python列表具有內置的 list.sort()方法,可以在原地修改列表。 還有一個 sorted()內置的函數從迭代構建一個新的排序列表。在本文中,我們將探討使用Python排序數據的各種技術。
請注意,sort()原始數據被破壞,sorted()沒有對原始數據進行操作,而是新建了一個新數據。
一、基本的排序
最基本的排序很簡單。只要使用sorted()函數即可返回一個 新的排序的列表
>>>sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]
咱們也可以使用 list.sort()方法。該方法是對列表list進行的原地操作(原數據被修改,已經不是原來的本來面目)。一般情況下,不如使用 sorted()方便,但是如果你不需要原列表list,使用 sort()會更具效率。
>>>a = [5, 2, 3, 1, 4]
>>>a.sort()
>>>a #a發生改變
[1, 2, 3, 4, 5]
另一個不同點, list.sort()方法只能應用於列表對象數據。而 sorted()卻可以對任何可迭代對象進行排序。也就是說sorted()更具有普遍使用性。這里大燈建議初學者使用sorted()。
二、Key參數函數
list.sort()和 sorted()都有key參數,可以指定函數來對元素進行排序。
例如,這里我們使用一個字元串(字元串也是可迭代對象)
>>>sorted("This is a test string from Andrew".split(), key=str.lower)
⑨ python中list.sort()的用
只要是可迭代對象都可以用sorted 。
sorted(itrearble, cmp=None, key=None, reverse=False)
=號後面是默認值 默認是升序排序的, 如果想讓結果降序排列,用reverse=True
最後會將排序的結果放到一個新的列表中, 而不是對iterable本身進行修改。
eg:
1, 簡單排序
sorted('123456') 字元串
['1', '2', '3', '4', '5', '6']
sorted([1,4,5,2,3,6]) 列表
[1, 2, 3, 4, 5, 6]
sorted({1:'q',3:'c',2:'g'}) 字典, 默認對字典的鍵進行排序
[1, 2, 3]
sorted({1:'q',3:'c',2:'g'}.keys()) 對字典的鍵
[1, 2, 3]
sorted({1:'q',3:'c',2:'g'}.values()) 對字典的值
['c', 'g', 'q']
sorted({1:'q',3:'c',2:'g'}.items()) 對鍵值對組成的元組的列表
[(1, 'q'), (2, 'g'), (3, 'c')]
2, 對元素指定的某一部分進行排序,關鍵字排序
s = ['Chr1-10.txt','Chr1-1.txt','Chr1-2.txt','Chr1-14.txt','Chr1-3.txt','Chr1-20.txt','Chr1-5.txt']
我想要按照-後的數字的大小升序排序。要用到key
sorted(s, key=lambda d : int(d.split('-')[-1].split('.')[0]))
['Chr1-1.txt', 'Chr1-2.txt', 'Chr1-3.txt', 'Chr1-5.txt', 'Chr1-10.txt', 'Chr1-14.txt', 'Chr1-20.txt']
這就是key的功能,制定排序的關鍵字,通常都是一個lambda函數,當然你也可以事先定義好這個函數。如果不講這個關鍵字轉化為整型,結果是這樣的:
sorted(s, key=lambda d : d.split('-')[-1].split('.')[0])
['Chr1-1.txt', 'Chr1-10.txt', 'Chr1-14.txt', 'Chr1-2.txt', 'Chr1-20.txt', 'Chr1-3.txt', 'Chr1-5.txt']
這相當於把這個關鍵字當做字元串了,很顯然,在python中,'2' > '10'
你可以定製你想要的key, 如 key = lambda x : len(x) 按照序列的長度去排序。key= lambda x : (x[1], x[0]) 按二個元素,再第一個 等等。。。