如何对字符串列表进行数字排序?

如何对字符串列表进行数字排序?

我知道这听起来微不足道,但我没有意识到sort()Python的功能很奇怪。我有一个实际上是字符串形式的“数字”列表,所以我首先将它们转换为int,然后尝试排序。

list1=["1","10","3","22","23","4","2","200"]for item in list1:
    item=int(item)list1.sort()print list1

给我:

['1', '10', '2', '200', '22', '23', '3', '4']

我想要的是

['1','2','3','4','10','22','23','200']

我已经查看了一些与数字集排序相关的算法,但我发现的算法都涉及字母数字集的排序。

我知道这可能是一个不需要思考的问题,但是Google和我的教科书并没有提供比.sort()功能。


大话西游666
浏览 2375回答 3
3回答

当年话下

实际上,您还没有将字符串转换为INT。或者说,你做了,但是你没有对结果做任何事情。你想要的是:list1 = ["1","10","3","22","23","4","2","200"]list1 = [int(x) for x in list1]list1.sort()如果由于某种原因需要保留字符串而不是int(通常是个坏主意,但可能需要保留前导零或其他东西),则可以使用钥匙功能。sort接受一个命名的参数,key,它是在对每个元素进行比较之前调用的函数。将比较键函数的返回值,而不是直接比较列表元素:list1 = ["1","10","3","22","23","4","2","200"]# call int(x) on each element before comparing itlist1.sort(key=int)

慕尼黑的夜晚无繁华

您可以将一个函数传递给key参数这个.sort方法..这样,系统将按键(X)而不是x排序。list1.sort(key=int)顺便说一下,若要永久地将列表转换为整数,请使用这个map功能list1 = list(map(int, list1))   # you don't need to call list() in Python 2.x或列表理解list1 = [int(x) for x in list1]

偶然的你

Python的类型并不奇怪。只是这段代码:for item in list1:    item=int(item)不是你想的那样-item不会被替换回列表中,它只是简单地被丢弃。无论如何,正确的解决办法是使用key=int就像其他人向你展示的那样。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python