我是Python的新手,正在解决基本问题以学习Python。在这个过程中,我尝试了按升序对列表进行排序的sort()
函数。
相同数字的增加数字将排序在一起,即使它们不应该排序。例如,数字6
、66
、666
等如果它们之间有一个数字,则不应该在一起。
我尝试使用不同类型的输入,但所有内容都像下面这样分组在一起:
(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
,你也可以使用map
和lambda
函数对这些数字进行排序。 只需在排序函数中使用 lambda 函数。
n.sort(key=lambda x: int(x))