从一行python加载x个数字

时间:2015-12-29 23:41:46

标签: python python-3.x

我正在尝试创建一个程序,它接受在python中用一行编写的一些数字,但它不能按照我期望的方式工作。 我得到了输入:

x = int(input())

然后尝试构建一个列表:

list = []
for i in range(x):
    list.append(int(input()))

但这只有在我依次输入数字时才有效。 我想解析像这样的输入行

1 2 3

到数字列表中。

4 个答案:

答案 0 :(得分:4)

您可以简单地按空格分割输入。

>>> inp = input()
1 2 3 4
>>> inp.split()
['1', '2', '3', '4']

这将为您提供一个数字列表作为字符串。要将它们转换为实际整数,可以使用map:

>>> list(map(int, inp.split()))
[1, 2, 3, 4]

答案 1 :(得分:1)

添加一些安全措施也不会有害,确保用户输入的数字不是别的:

inp = input('Enter Numbers:')

lst = [int(i) for i in inp.split() if i.isdigit()]

答案 2 :(得分:1)

您可以使用split字符串方法和列表理解来实现此目的:

num_str = input("Enter number string: ")
num_list = [int(i) for i in num_str.split()]

如果num_str为:"3 4 6 5 6"

num_list将是:[3, 4, 6, 5, 6]

更多信息:

来自文档的

str.split信息:

  

Docstring:S.split([sep [,maxsplit]]) - >字符串列表

     

使用sep作为分隔符,返回字符串S中的单词列表   串。如果给出maxsplit,则最多完成maxsplit分割。如果   sep未指定或为None,任何空白字符串都是分隔符   从结果中删除空字符串。类型:
  method_descriptor

列表理解:

http://www.wikihow.com/Use-Python-List-Comprehension

http://www.secnetix.de/olli/Python/list_comprehensions.hawk

答案 3 :(得分:-1)

mylist = []
uservals = input("enter some numbers: ")
for i in uservals.split():
    mylist.append(int(i))