Python:对由字母和数字组成的字符串列表进行排序

Python:对由字母和数字组成的字符串列表进行排序,python,list,sorting,Python,List,Sorting,我有一个列表,其元素由字母和数字组成,如下所示: ['H1', 'H100', 'H10', 'H3', 'H2', 'H6', 'H11', 'H50', 'H5', 'H99', 'H8'] 我想对它进行排序,所以我使用了函数sort,但我得到了输出: >>> a = ['H1', 'H100', 'H10', 'H3', 'H2', 'H6', 'H11', 'H50', 'H5', 'H99', 'H8'] >>> print sorted(a)

我有一个列表,其元素由字母和数字组成,如下所示:

['H1', 'H100', 'H10', 'H3', 'H2', 'H6', 'H11', 'H50', 'H5', 'H99', 'H8'] 
我想对它进行排序,所以我使用了函数sort,但我得到了输出:

>>> a = ['H1', 'H100', 'H10', 'H3', 'H2', 'H6', 'H11', 'H50', 'H5', 'H99', 'H8']
>>> print sorted(a)
['H1', 'H10', 'H100', 'H11', 'H2', 'H3', 'H5', 'H50', 'H6', 'H8', 'H99']
但是,我希望输出为:

['H1', 'H2', 'H3', 'H5', 'H6', 'H8', 'H10', 'H11', 'H50', 'H99', 'H100']
有人知道怎么做吗?多谢各位

l = ['H1', 'H100', 'H10', 'H3', 'H2', 'H6', 'H11', 'H50', 'H5', 'H99', 'H8']
print sorted(l, key=lambda x: int("".join([i for i in x if i.isdigit()])))
输出:

['H1', 'H2', 'H3', 'H5', 'H6', 'H8', 'H10', 'H11', 'H50', 'H99', 'H100']

谢谢,这是一个非常简单明了的解决方案。欢迎:)。您好@Rakesh,请您解释一下这部分
int(“.”.join([i代表x中的i,如果i.isdigit()]))
。为什么
isdigit
没有给出false,因为我认为它是这样工作的
isdigit('H1')
isdigit('H100')
…@PIG此代码段获取字符串的数字部分。例如,“H100”变为100<如果i.isdigit()会逐字检查字母是否为数字,则为x中的i编写代码>。如果是数字,它将添加到列表中。当我们执行
”。join
时,我们会将列表中的所有元素(即字符串的数字)与空分隔符组合在一起,即“”。@SergeyIvanov谢谢