尝试在一行中获取列表的大小和输入

时间:2019-10-04 11:46:16

标签: python-3.x list input

我想在一行中输入用户的“ n + 1”个数字,第一个数字给出列表的大小,而后面的数字是列表的实际元素。

(n,listA)=(int(input()),list(map(int,input().split())))

这有效,但是我必须在输入第一个数字(大小)后按Enter键,否则会出现错误。我希望此操作无需输入即可。 示例-4 12 43 23 56 所以大小= 4 list = [12,43,23,56]

2 个答案:

答案 0 :(得分:2)

我假设您出于代码打高尔夫的目的而想要它。这是AFAIK可以使用的最短的oneliner:

n,*l=map(int,input().split())  # in:  3 6 71 51
print(n)                       # out: 3
print(l)                       # out: [6, 71, 51]

在不使用分号的情况下,我认为使用Python 3.8只能将输入的大小限制为一行:

n,*l=list(map(int,i:=input().split()))[:int(i[0])+1]  # in:  3 6 71 51 80 95
print(n)                                              # out: 3
print(l)                                              # out: [6, 71, 51]

答案 1 :(得分:0)

[[n],listA] = [list(map(int,i.split())) for i in input().split(' ',1)]

split('',1)将拆分第一次出现的内容,因此像4 12 43 23 56这样的输入将拆分为'4','12 43 23 56',

然后通过映射对瓶坯进行另一次喷射,输出将为[[4], [12, 43, 23, 56]]

然后我们可以再次[[n],listA]拆开值。

但是我建议忽略输入和取数字列表的大小,通过使用size = len(listA)我们可以确定大小。