我想在一行中输入用户的“ n + 1”个数字,第一个数字给出列表的大小,而后面的数字是列表的实际元素。
(n,listA)=(int(input()),list(map(int,input().split())))
这有效,但是我必须在输入第一个数字(大小)后按Enter键,否则会出现错误。我希望此操作无需输入即可。 示例-4 12 43 23 56 所以大小= 4 list = [12,43,23,56]
答案 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)
我们可以确定大小。