2017-06-12 11 views
1

こんにちは私はforループでリストを作成しようとしています。これはこれまで私が持っているものです:forループでのPythonのポピュレートリスト

newlist = [] 
for x in range(10): 
    for y in range(10): 
     newlist.append(y) 

この時点で私は困惑しています。私はループが私に10リストのリストを与えることを望んでいた。

thx

+1

いいえ、それはあなたにそれ – user3764893

答えて

4

あなたは近くでした。しかし、内側のループの新しい要素を空のリストに追加する必要があります。空のリストは外側のリストの要素として追加されます。さもなければ、(あなたのコードからわかるように)100要素のフラットなリストを得るでしょう。

newlist = [] 
for x in range(10): 
    innerlist = [] 
    for y in range(10): 
     innerlist.append(y) 
    newlist.append(innerlist) 

print(newlist) 

さらに簡潔なバージョンについては、Błotosmętekのコメントを参照してください。

+1

で100個の要素を持つリストを与えるだろう...と、とにかく、 'newlist = [[範囲のyの範囲(10)]でxのX (10)] 'はより簡潔である。 –

+0

@Błotosmętek良い点。 –

+0

ああ、ありがとう、あなたは私がやろうとしていることをする5つの方法のように私に与えた:P私は彼らのうちの1人にも感謝してもらいたいと思います – CommanderPO

1

あなたは別のレベルあなたは同じ結果を達成するためにlist comprehensionと、この1行のコードを使用することができます

newlist = [] 
for x in range(10): 
    temp_list = [] 
    for y in range(10): 
     temp_list.append(y) 
    newlist.append(temp_list) 
1

それとも、ネストされたリストの内包

[[x for x in range(10)] for _ in range(10)] 
+1

これだけで何もここではできません。 2つのforループ(OP)で苦労している人にとっては、重要な 'new_list ='部分を追加するべきでしょう...また、 '' range(10) 'の[list(range(10))] '、しかし、主に意見に基づいています。 –

1

取得するintermiateリストを置く必要があります。

new_list = [[i for i in range(10)] for j in range(10)] 
+1

ほとんどの意見に基づいているにもかかわらず、 'new_list = [list(range)(10)]を行うのはちょっとうまくいきます。 –

+0

ありがとう@MarkusMeskanen、私の考えは、OPの方が簡単で、彼らはリスト内包としています:) – ettanany

3

また、ループが1つ必要で、を追加するだけです。

newlist = [] 
for x in range(10): 
    newlist.append(list(range(10))) 

それとも

newlist = [list(range(10)) for _ in range(10)]