2017-09-01 74 views
1

嘿,我想知道如果有人知道如何創建一個10列表增加長度的列表。第一個列表應該是空的,即len(mylist[0]) == 0;第二個列表應該有一個元素,所以len(mylist[1]) == 1;等等。我一直在嘗試使用extendappendinsert但無濟於事創建不斷增加的長度python的列表

到目前爲止,我已經能夠創建10名列表沒有元素

def mylists(x):  
    d = [[] for x in range(0,x)] 
    return d 

print (mylists(10) 

任何幫助將不勝感激!

回答

0

試試這個:

super_list = [] 
for i in range(10): 
    super_list.append(list(range(i))) # .append(range(i)) suffices for python2 

您可能需要調整的範圍,這取決於你想要的結果。那10次迭代將會給你十名名單,像這樣:

[[], 
[0], 
[0, 1], 
[0, 1, 2], 
[0, 1, 2, 3], 
[0, 1, 2, 3, 4], 
[0, 1, 2, 3, 4, 5], 
[0, 1, 2, 3, 4, 5, 6], 
[0, 1, 2, 3, 4, 5, 6, 7], 
[0, 1, 2, 3, 4, 5, 6, 7, 8]] 

如果您彷彿置身於一個更functional的方式做,這將實現同樣的結果在Python 2:

map(range, range(10)) 

或者在Python 3:

list(map(lambda i: list(range(i)), range(10))) 
+1

僅適用於python2。 Python3將需要轉換爲'list'。 –

+2

你不需要lambda。 '地圖(範圍,範圍(10))'工作正常。 – user2357112

+0

好評,謝謝。雖然Python 3仍然需要Lambda,因爲它有額外的'list'調用。 – robmathers

1

你可以這樣做:

print([[i]*i for i in range(10)]) 
0
>>> [[i for i in range(n)] for n in range(1,8,1)] 
[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6]] 

對於使用方法

>>> def test(n): 
...  return [[i for i in range(m)] for m in range(1,n+2,1)] 
... 
>>> 
>>> print test(5) 
[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5]] 
相關問題