如何在列表之间进行排序

时间:2019-04-22 15:47:43

标签: python python-3.x

我正在尝试使用空格对列表进行排序 喜欢,

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)

3 个答案:

答案 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]