code:
list=['1','85863','432','93','549834']
list.sort()
print (list)
Actual output:
>>>
['1', '432', '549834', '85863', '93']
#why sort is not working
Expected output:
['1','93','432','83863','549834']
我也尝试了其他排序操作,但它们显示相同的输出。 当我试图从键盘输入读取列表时,他们只读取字符串而不是int请帮助我为什么?
答案 0 :(得分:2)
当我尝试从键盘输入读取列表时,他们只读取字符串而不是int请帮助我为什么
如果x
是字符串,只需使用int(x)
转换为int
您正在排序字符串(文本),而不是像整数这样的数值
对于您的预期输出,您必须先转换为整数
my_list= ['1','85863','432','93','549834']
my_list = [int(x) for x in my_list]
现在您可以按数字排序,并获取整数列表
my_list.sort()
N.B。避免使用list
作为变量名,它是内置的Python
答案 1 :(得分:2)
我认为您希望按总和进行排序以匹配您的预期输出:
l = ['1','85863','432','93','549834']
l.sort(key=lambda x: sum(map(int,x)))
print(l)
['1', '432', '93', '83863', '549834']
答案 2 :(得分:1)
您需要先将字符串转换为int。
list = [int(ele) for ele in list]
list.sort()
print list
答案 3 :(得分:0)
没有int:
lst = ['1','85863','432','93','549834']
lst.sort()
lst.sort(key=len)
print(lst)
这给:
['1', '93', '432', '85863', '549834']
如果你想要整数......
my_int = int(input())
答案 4 :(得分:0)
我简单地错过了将字符串转换为int的逻辑。默认的python输入将被视为字符串。所以,我们可以使用答案中提到的任何方法转换为字符串,然后sort()
方法在int上成功地工作