2017-06-12 73 views
1

你好,我正在嘗試用for循環填充一個列表。這是我到目前爲止:python populate list with for循環

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 = [[X爲X的範圍(10)]的範圍內ÿ (10)]'更簡潔。 –

+0

@Błotosmętek好點。 –

+0

哦哇感謝你們給我喜歡5種方法來做我想做的事情:P我希望我能想到他們中的一個,謝謝 – CommanderPO

1

你應該把一個intermiate列表以獲得另一個層面

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

這本身在這裏不會做任何事情。對於有兩個for循環(OP)的人來說,你可能應該添加重要的'new_list ='部分......另外,在範圍(10)中爲'_ list(range(10)) ',雖然主要是基於意見的。 –

1

您可以使用這一行代碼list comprehension以達到相同的結果:

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

雖然大多數意見都是基於 –

+0

謝謝@ MarkusMeskanen,我的想法是讓OP更簡單,做同樣的事情,這可能更適合做'new_list = [list(range(10))他們正在嘗試做,但與列表解析:) – ettanany

3

或者,您只需要一個循環並追加range(10)

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

或者

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