如何从python3中的单行输入读取整数数组

时间:2013-08-20 10:32:37

标签: python arrays list input python-3.2

我想从python3中的单行输入读取一个整数数组。 例如:将此数组读取到变量/列表

1 3 5 7 9

我尝试了什么

  1. arr = input.split(' ')但这不会将它们转换为整数。它创建字符串数组

  2. arr = input.split(' ')

    for i,val in enumerate(arr): arr[i] = int(val)

  3. 第二个人正在为我工​​作。但我正在寻找一种优雅的(单线)解决方案。

4 个答案:

答案 0 :(得分:21)

使用map

arr = list(map(int, input().split()))

只需添加,在Python 2.x中,您不需要调用list(),因为map()已经返回list,但在Python 3.x中{{3} }。

此输入必须添加()即括号对才能遇到错误。这适用于3.x和2.x Python

答案 1 :(得分:5)

编辑:使用Python近4年之后,只是偶然发现了这个答案,并意识到接受的答案是一个更好的解决方案。

使用list comprehensions可以实现同样的目标:
以下是ideone上的示例:

arr = [int(i) for i in input().split()]

如果您使用的是Python 2,则应使用raw_input()代替。

答案 2 :(得分:1)

您可以从以下程序中获得良好的参考

# The following command can take n number of inputs 
n,k=map(int, input().split(' '))
a=list(map(int,input().split(' ')))
count=0
for each in a:
    if each >= a[k-1] and each !=0:
        count+=1
print(count)

答案 3 :(得分:0)

您可以在下面的代码中尝试以下代码,该代码从用户处获取输入并将其读取为数组而不是列表。

from array import *
a = array('i',(int(i) for i in input('Enter Number:').split()))
print(type(a))
print(a)

另外,如果您希望将其转换为列表:

b = a.tolist()
print(type(b))  
print(b)