11

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

1 3 5 7 9

我试过的

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

  2. arr = input.split(' ')

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

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

4

4 回答 4

36

使用map

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

只需添加,在 Python 2.x 中您不需要 to call list(),因为map()已经返回 a list,但在 Python 3.x 中“许多迭代迭代器的进程本身返回迭代器”

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

于 2013-08-20T10:36:28.770 回答
6

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

使用列表推导也可以实现同样的目的:
这是ideone的示例:

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

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

于 2015-10-09T04:34:59.650 回答
2

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

# 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)
于 2019-09-11T14:58:46.823 回答
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)
于 2020-06-05T09:12:37.830 回答