2015-10-14 13 views
6

mam uzyskania wartości wejściowe na liście używając następującej klauzuli:Ograniczając liczbę wartości wejściowych w tablicy/listy w Pythonie

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

Jednak chciałbym, aby ograniczyć liczbę wejść użytkownik może dawać na czas. Na przykład, jeśli limit jest określony przez liczbę n, tablica powinna przechwytywać tylko pierwszych n wartości wprowadzonych podczas programu.

np: jeśli n = 6, Wejście:

1 2 3 4 5 6 7 8 9 10 

Na wykonywania 'Print AR', to powinny wykazywać następujące bez żadnych komunikatów o błędach:

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

I powinien zignorować resztę wejście? –

Odpowiedz

4

Jeśli chcesz ignorować Reszta danych wejściowych, możesz użyć cięcia, aby pobrać tylko pierwsze wejście n. Przykład -

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

Mamy również stosując opcję maxsplit dla str.split tak, że tylko dzieli 6 razy, a następnie wykonuje się pierwsze elementy 6 i przekształca je na int.

To trochę więcej wydajności. Możemy również zrobić proste - ar = map(int, raw_input().split())[:n], ale byłoby mniej wydajne niż powyższe rozwiązanie.

Demo -

>>> 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] 
+0

Bravo! Dzięki, to dość eleganckie rozwiązanie, właśnie tego chciałem. Jestem całkiem nowy dla Pythona, a krojenie jest dla mnie całkiem nowym pomysłem. –

+0

W rzeczywistości stwierdziłem, że używając instrukcji: 'ar = map (int, raw_input(). Split()) [: n]' działa również. Argumenty nie muszą być podawane dla wywołania funkcji split(). –

+0

Tak, wyjaśniłem to w mojej odpowiedzi. Moje pierwsze rozwiązanie było takie. Ale potem dla nieco większej wydajności dałem obecne rozwiązanie. –

1

Jak o indeksowaniu ar tylko 6. Element? Technicznie rzecz biorąc, to do 7 elementów, jak newarray będzie pokroić w górę, ale nie w tym n-tego elementu

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] 

powinno to pozwolić na nieograniczone wejście

Powiązane problemy