如果我有一个包含所有字符串但包含数字的列表:
a = ['0.01um', 'Control', '0.1um', '0.05um']
如果我对列表进行排序,它看起来像这样
a.sort()
print(a)
['0.01um', '0.05um', '0.1um', 'Control']
我怎样才能让它排序,以便以字母开头的字符串出现在以数字开头的字符串之前,但数字仍然从小到大排序。例如:
['Control', '0.01um', '0.05um', '0.1um']
最佳答案
好吧,要让以字母开头的字符串在以数字开头的字符串之前进行整理,听起来您需要将它们分开,对每个字符串进行排序,然后将一个(子)列表附加到另一个列表。
为了对包含数字的字符串进行“自然”排序,我会查看 natsort .
所以代码可能看起来像这样:
#!python
# UNTESTED
import string
from natsort import natsorted
a = ['0.01um', 'Control', '0.1um', '0.05um']
astrs = [x for x in a if not x[0] in string.digits]
anums = [x for x in a if x[0] in string.digits]
results = natsorted(astrs) + natsorted(anums)
关于python - 用数字对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29572941/