2015-10-14 8 views
6
の配列/リスト内の入力値の数

を制限します一度に与える。たとえば、制限がnで指定されている場合、配列はプログラム中に入力された最初のn個の値のみを取得する必要があります。は、私は次のステートメントを使用して、リスト内の入力値を取得していますPythonの

例:N = 6、 入力場合: 'プリントAR' を実行するには

1 2 3 4 5 6 7 8 9 10 

、それはすべてのエラーメッセージなしで次のように表示されるはずです:

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

を可能にすべきであり、それは入力の残りの部分を無視する必要がありますか? –

答えて

4

を無視する場合残りの入力は、最初のn入力のみを取るためにスライスすることができます。例 - それだけで6回を分割し、最初の6つの要素を取り、intに変換しているように、我々はまた、str.splitためmaxsplitオプションを使用している

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

これはもう少しパフォーマンスが向上するためのものです。我々はまた、単純な - ar = map(int, raw_input().split())[:n]を行うことができますが、それは上記の解決策よりパフォーマンスが低いでしょう。

デモ - ちょうど第六の要素へのインデックスar程度

>>> 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

ブラボー!ありがとう、それは非常にエレガントなソリューションです、ちょうど私が望んでいた。私はPythonにはかなり新しく、スライスは私のための新鮮なコンセプトです。 –

+0

実際には、 'ar = map(int、raw_input()。split())[:n]'というステートメントを使っても同じことが分かりました。 split()関数呼び出しの引数を指定する必要はありません。 –

+0

はい、私は私の答えでそれを説明しました。私の最初の解決策はそれでした。しかし、もう少しパフォーマンスを上げるために、私は現在のソリューションを提供しました。 –

1

どのように?技術的には、それはnewarrayが最大スライスうとして、第七要素にだが、

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] 

n番目の要素を含めていないこれは、無制限の入力

関連する問題