Попытка взять размер и ввод списка в одну строку - PullRequest
0 голосов
/ 04 октября 2019

Я хочу ввести 'n + 1' чисел от пользователя в одну строку, первое число соответствует размеру списка, а следующие числа являются фактическими элементами списка.

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

Это работает, но я должен нажать Enter после ввода первого числа (размера), иначе я получаю ошибку. Я хочу, чтобы это было сделано без ввода. Пример - 4 12 43 23 56 So size = 4 list = [12,43,23,56]

Ответы [ 2 ]

2 голосов
/ 04 октября 2019

Полагаю, вы хотите это для целей игры в гольф. Это 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]
0 голосов
/ 04 октября 2019
[[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) мы можем определить размер.

...