为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

大话西游666 2019-07-05 14:43:37
如何对字符串列表进行数字排序?我知道这听起来微不足道,但我没有意识到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()功能。
查看完整描述

3 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

实际上,您还没有将字符串转换为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)


查看完整回答
反对 回复 2019-07-05
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

您可以将一个函数传递给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]


查看完整回答
反对 回复 2019-07-05
?
偶然的你

TA贡献1841条经验 获得超3个赞

Python的类型并不奇怪。只是这段代码:

for item in list1:
   item=int(item)

不是你想的那样-item不会被替换回列表中,它只是简单地被丢弃。

无论如何,正确的解决办法是使用key=int就像其他人向你展示的那样。


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 2374 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号