Ограничение количества входных значений в массиве / списке в 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]
Это должно обеспечить неограниченный вход