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]) 按二个元素,再第一个 等等。。。