我知道这听起来微不足道,但我没有意识到 Python 的 sort()
函数很奇怪。我有一个实际上是字符串形式的“数字”列表,所以我首先将它们转换为整数,然后尝试排序。
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']
我环顾四周寻找与排序数字集相关的一些算法,但我发现的所有算法都涉及排序字母数字集。
我知道这可能是一个简单的问题,但谷歌和我的教科书没有提供比 .sort()
功能或多或少有用的东西。
原文由 Brian 发布,翻译遵循 CC BY-SA 4.0 许可协议
您实际上还没有将字符串转换为整数。或者更确切地说,你做了,但是你没有对结果做任何事情。你想要的是:
如果由于某种原因您需要保留字符串而不是整数(通常是一个坏主意,但也许您需要保留前导零或其他东西),您可以使用 key 函数。
sort
采用命名参数key
,这是一个在比较之前在每个元素上调用的函数。比较键函数的返回值,而不是直接比较列表元素: