我试图使用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)
答案 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]