2016-03-30 4 views
2

私はPythonの初心者で一般的なプログラミングなので、いくつかの基本を学びたいと思っています。Python:n個の入力からn個の新しいリストを作成するにはどうすればよいですか?

基本的には、今は2、3、12などの整数のユーザー入力があります。これらの数値は "numbers"というリストに入れられます。そのリストから、それぞれの番号にその番号までのすべての自然数の新しいリストを作成させたい。例えば

は:

inputs = 2, 4, n 
numbers = [2, 4, 10] 
list 1 = [1, 2] 
list 2 = [1, 2, 3, 4,] 
list 3 = [1, 2, ..., n-1, n] 

私の最初の考えは、数字上のforループを行うにはあったが、どのように実際に私を逃亡されたリストのn個の量を作ること。

ご協力いただきありがとうございます。

+0

'[list(range(1、n + 1))のn個の数値]'? – univerio

答えて

1

Pythons range()機能がこれに適しています。

あなたのようにどこにインデックスリストをすることができ、リストのリストを作成する必要があります:あなたは

>>>numbers = [2, 4, 10] 
>>>list_of_list = [list(range(1, n+1)) for n in numbers] 

述べたように、リスト内の番号の入力を取得する場合

list1 = list_of_list[0] 
list2 = list_of_list[1] 
list3 = list_of_list[2] 

出力は次のようになります。

>>>list_of_list 
>>>[[1, 2], [1, 2, 3, 4], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]] 

これは、Pythonのリスト内包と呼ばれます。あなたはリスト番号と各番号、呼び出し範囲、リストとしてのキャストを繰り返しています。

+0

すごく、ありがとう!これは私が予想していたよりもはるかに簡単な解決策でした。 –

0

変数 "list1"、 "list2"、 "list3"をループ内で動的に取得することはできません。あなたがしたいのは、ネストされたリストを持つ変数を作ることです。ここ

numbers = [2, 4, 6] 

lists = [] // Initialize it as an empty list 

各反復は、あなたが第一の入力と、所望の[1、2]を取得する1からN + 1への配列のリストを追加します。

for n in numbers: 
    lists.append(range(1, n+1)) 

その後、あなたは常に、各リストを取り出し、それ自身の変数に入れますが、「LISTX」を追加することは、あなたが入力を変更するたびに理想的ではないことができます。

関連する問題