对数字字符串列表进行排序
Python 的 sort() 函数在处理表示数字的字符串时可能会令人困惑。本文解释了原因并提出了对此类列表进行数字排序的解决方案。
问题:
考虑下面的代码片段:
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] for item in list1: item = int(item) list1.sort() print(list1)
This代码尝试将列表中的每个字符串转换为整数,然后对列表进行排序。但是,输出不正确:
['1', '10', '2', '200', '22', '23', '3', '4']
解决方案:
给定代码中的问题是,虽然每个字符串在循环内转换为整数,循环不会更新原始列表。要解决此问题,请将字符串转换为整数并创建一个新列表:
list1 = [int(x) for x in list1] list1.sort()
使用键函数:
如果您需要保留字符串而不是将它们转换为整数,您可以在 sort() 函数中使用 key 参数:
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] list1.sort(key=int)
或在单个line:
list1 = sorted([int(x) for x in list1])
在这两种情况下,在比较之前都会调用 int() 函数作为每个字符串的键,从而允许列表按数字排序。
以上是如何在 Python 中对数字字符串列表进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!