python3 .sort()列表出错了

时间:2017-10-06 11:46:23

标签: python-3.x sorting

我试图使用Visual Studio Code在Python 3中对列表进行排序: 我从命令行中的参数中获取列表。第一个参数被忽略,这是我的针变量。 在丢失中添加所有变量之后我想对列表进行排序。 问题是它以一种相当奇怪的方式排序

在2到21之后,然后3在5之后变为55而不是6

这是我的命令行:

C:\Users\Gebruikertje\Desktop\Python>python find.py 21 2 3 4 5 6 21 55 3

这是输出:

['2', '21', '3', '3', '4', '5', '55', '6']

这是我引用

的代码的一部分
import sys

finish = len(sys.argv)
needle = sys.argv[1]
haystack = []
for i in range (2,finish ):
    haystack.append(sys.argv[i])
haystack.sort()
print(haystack)

3 个答案:

答案 0 :(得分:2)

您正在尝试对字符串列表进行排序。

将它们转换为 int ,同时将它们添加到列表

haystack.append(int(sys.argv[i]))

您也可以在此处使用map()

haystack = map(int, sys.argv[1:])

答案 1 :(得分:1)

argv输入的值是字符串,因此按字典顺序排序。如果你想用数字排序它们,你应该将它们转换为数字。在列表推导中执行此操作还可以帮助从循环中清除一些锅炉板:

haystack = [int(x) for x in sys.argv[1:]]
haystack.sort()

答案 2 :(得分:1)

尝试:

x = ['2', '21', '3', '3', '4', '5', '55', '6']
y = [int(number) for number in x]
y.sort()

# Result = [2, 3, 3, 4, 5, 6, 21, 55]