排序函数 sort() 在特定情况下无法按预期工作



我是Python的新手,正在解决基本问题以学习Python。在这个过程中,我尝试了按升序对列表进行排序的sort()函数。

相同数字的增加数字将排序在一起,即使它们不应该排序。例如,数字666666等如果它们之间有一个数字,则不应该在一起。

我尝试使用不同类型的输入,但所有内容都像下面这样分组在一起:

(base) C:DataPersonal DataPython>python test.py
10
1
11
111
1111
2
22
222
2222
3
33
['1', '11', '111', '1111', '2', '22', '222', '2222', '3', '33']

以下是为此目的编写的代码:

t = int(input()) #Accepts user input for number of iterations
n = []
for i in range(t):
u = input()
n.append(u)
n.sort() 
print(n)

虽然我没有看到任何错误消息,但输出绝对是我期望的。我在这里做错了什么吗?

问题是你正在对字符串而不是数字进行排序,解决方案在于你的代码,只需在读取所有数字时使用int,就像在读取迭代次数时使用

它一样:
for i in range(t):
u = int(input())
n.append(u)

即使你把输入作为字符串格式的数字,在list,你也可以使用maplambda函数对这些数字进行排序。 只需在排序函数中使用 lambda 函数。

n.sort(key=lambda x: int(x)) 

最新更新