我知道这听起来微不足道,但我没有意识到sort()Python 的函数很奇怪。我有一个“数字”列表,它们实际上是字符串形式,所以我首先将它们转换为 int,然后尝试排序。
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()功能更有用或更无用的东西。
.sort()
您实际上并未将字符串转换为整数。或者说,您确实转换了字符串,但并未对结果执行任何操作。您想要的是:
list1 = ["1","10","3","22","23","4","2","200"] list1 = [int(x) for x in list1] list1.sort()
如果出于某种原因您需要保留字符串而不是整数(通常不是一个好主意,但也许您需要保留前导零或其他内容),则可以使用key函数。sort采用命名参数key,这是一个在比较每个元素之前调用的函数。将比较 key 函数的返回值,而不是直接比较列表元素:
sort
key
list1 = ["1","10","3","22","23","4","2","200"] # call int(x) on each element before comparing it list1.sort(key=int) # or if you want to do it all in the same line list1 = sorted([int(x) for x in list1])