2017-07-10 13 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 

私が必要とするのは、すべてのxのすべての変数[i]のリストです。しかし、この変数[i]を作成すると、2回目に別の値を宣言することはできません。

+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) 

ところで、forループのように、あなたのコード内のwhile(x<10)x=x+1の必要は、あなたのために正確に行われません。

+0

あなたは 'while(x <10)'を適切なfor-loopに置き換えるのを忘れているかもしれないと思います – jadsq

2

辞書内のキーは一意である必要があります。

最初のforループの後に、キーとして1 ... 10の辞書があります。 2番目のループを実行すると、以前の値を上書きするだけです。

代わりに、結果を集約することができます。集計とは、存在する場合は既存のキーの値を合計することを意味します。

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} 

あなたがして同じ結果を得ることができますこの1ライナー:

>>> {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ゼロとn-1の間の整数キーを持つ辞書を使用する意味があります。あなたはちょうどあなたがリストのリストまたはリストの辞書をしたい場合は、あなたがこれを使用することができ

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

を書くことができ意味どの

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

:このためには、単にn要素を持つリストを使用することができます構造:

>>> {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]] 
関連する問題