2017-07-10 69 views
-1

在Python中,我試圖用動態變量名創建一個動態列表。如何用循環中的動態變量創建動態列表

variable = dict() 
x = 0 
while (x < 10): 
    for i in range(0, 10): 
     variable[i] = i + 3 # just an example code 
     print (i) 
    x = x + 1 

我需要的是每個變量[i]的列表,每個x。但是當我創建這個變量[i]時,我無法再第二次添加另一個值...

+0

輸出結果如何在您的腦海中看起來像?你可以編輯問題與理想的結果嗎? –

+1

你有什麼理由在你的代碼示例中引入一本字典嗎?我在你的問題 – offeltoffel

+3

'variable [i] = variable.get(i,0)+ i + 3'中看不到這個目的。這不是一個列表,這是一個字典。 –

回答

1

忽略代碼示例中似乎不屬於實際問題一部分的部分,可以將列表項添加到名單與「追加」:

variable = [] # create empty list 
for i in range(10): # range(10) is the same as range(0,10) 
    variable.append(i+3) 
    print(i) 

順便說一句,沒有必要在你的代碼while(x<10)x=x+1,作爲一個for循環正是這麼做的爲您服務。

+0

我想你可能已經忘記用適當的for-loop代替'while(x <10)' – jadsq

2

字典中的鍵必須是唯一的。

第一個for循環後,您有一個1 ... 10作爲關鍵字的字典。 當你做第二個循環時,你只是覆蓋你以前的值。

相反,您可以彙總結果,當我說彙總我的意思是,如果他存在的話,你將總結一個現有的密鑰的價值。

如果該鍵不比variable.get(i, 0)結果存在將爲0

variable = dict() 
x = 0 
while (x < 10): 
    for i in range(0, 10): 
     variable[i] = variable.get(i, 0) + i + 3 # just an example code 
    x = x + 1 
0

現在,你的代碼定義variable是:

{0: 3, 1: 4, 2: 5, 3: 6, 4: 7, 5: 8, 6: 9, 7: 10, 8: 11, 9: 12} 

你可以得到相同的結果與這一行:

>>> {i: i + 3 for i in range(10)} 
{0: 3, 1: 4, 2: 5, 3: 6, 4: 7, 5: 8, 6: 9, 7: 10, 8: 11, 9: 12} 

請注意,它通常不會m ake sense使用一個整數鍵在0和n-1之間的字典。對於這一點,你可以簡單地用一個列表與n元素:

>>> [i + 3 for i in range(10)] 
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 

這意味着你可以只寫

>>> range(3,13) 
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 

如果你想列出的清單或名單的字典,您可以使用此結構:

>>> {i: [i + j for j in range(3)] for i in range(3)} 
{0: [0, 1, 2], 1: [1, 2, 3], 2: [2, 3, 4]} 

>>> [[i + j for j in range(3)] for i in range(3)] 
[[0, 1, 2], [1, 2, 3], [2, 3, 4]]