我正在尝试使用空格对列表进行排序 喜欢,
my_list = [20 10 50 400 100 500]
但我遇到了错误
"ValueError: invalid literal for int() with base 10: '10 20 50 100 500 400 '"
代码:
strength = int(input())
strength_s = strength.sort()
print(strength_s)
答案 0 :(得分:1)
input
中的python
函数以str
的形式返回整行。
因此,如果输入以空格分隔的整数列表,则input
函数将以字符串形式返回整行。
>>> a = input()
1 2 3 4 5
>>> type(a)
<class 'str'>
>>> a
'1 2 3 4 5'
如果要将其另存为整数列表,则必须遵循以下过程。
>>> a = input()
1 2 3 4 5
>>> a
'1 2 3 4 5'
现在,我们需要将字符串中的数字分开,即拆分字符串。
>>> a = a.strip().split() # .strip() will simply get rid of trailing whitespaces
>>> a
['1', '2', '3', '4', '5']
我们现在有list
的{{1}},我们必须将其转换为strings
的{{1}}。我们必须为list
的每个元素调用ints
,最好的方法是使用int()
函数。
list
我们终于有了map
中的>>> a = map(int, a)
>>> a
<map object at 0x0081B510>
>>> a = list(a) # map() returns a map object which is a generator, it has to be converted to a list
>>> a
[1, 2, 3, 4, 5]
这整个过程主要是在list
代码的一行中完成的:
ints
答案 1 :(得分:0)
从用户那里获取带有空格的输入
strength = list(map(int, input().strip().split()))
对它们进行排序:
strength.sort()
并打印:
print(strength)
答案 2 :(得分:0)
首先,my_list = [20 10 50 400 100 500]
既不是列表,也不是表示一个列表的正确方法。
您使用my_list = [20, 10 ,50, 400, 100, 500]
表示列表。
我将假设my_list
是一个字符串。因此,您将把字符串拆分为一个列表,将列表转换为整数,然后对其进行排序,就像这样
my_list = "20 10 50 400 100 500"
li = [int(item) for item in my_list.split(' ')]
print(sorted(li))
#[10, 20, 50, 100, 400, 500]
要使您的原始代码正常工作,我们会
strength = input()
strength_li = [int(item) for item in strength.split(' ')]
print(sorted(strength_li))
输出看起来像
10 20 40 30 60
#[10, 20, 30, 40, 60]