Ограничение количества входных значений в массиве / списке в Python

Я получаю входные значения в списке, используя следующий оператор:

ar = map(int, raw_input().split())

однако я хотел бы ограничить количество входов, которые пользователь может дать за раз. Например, если ограничение задано числом n, массив должен фиксировать только первые n значений, введенных во время программы.

e.g: если n = 6, Ввод:

1 2 3 4 5 6 7 8 9 10

при выполнении "print ar" он должен отображать следующее без каких-либо сообщений об ошибках:

[1, 2, 3, 4, 5, 6]

2 ответов


если вы хотите игнорировать остальную часть ввода, то вы можете использовать нарезку, чтобы взять только первый n вход. Пример -

n = 6
ar = map(int, raw_input().split(None, n)[:n])

мы также используем на str.split так что он только разбивается 6 раз, а затем берет первые 6 элементов и преобразует их в int.

это для немного большей производительности. Мы также можем сделать простой - ar = map(int, raw_input().split())[:n] но это было бы менее эффективным, чем вышеупомянутое решение.

демо -

>>> n = 6
>>> ar = map(int, raw_input().split(None, n)[:n])
1 2 3 4 5 6 7 8 9 0 1 2 3 4 6
>>> print ar
[1, 2, 3, 4, 5, 6]

как насчет индексации ar только для 6-го элемента? Технически, это до 7-го элемента, как newarray будет нарезать до, но не включая N-й элемент

ar = map(int, raw_input().split())
print ar
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

newarray=ar[0:6]
print newarray
#[1, 2, 3, 4, 5, 6]

Это должно обеспечить неограниченный вход