0

プログラムについて簡単な質問がありました。rdf12(i)のように、という名前のすべての変数に 0 を代入したいrdf12(1) = 0 rdf12(2) = 0。これが私のコードです:

for i in range(200):
    rdf12(i) = 0

しかし、それはそれほど簡単ではないことが判明し、次のようなエラーが表示されました。

SyntaxError: can't assign to function call

では、コードを編集して修正するにはどうすればよいでしょうか?

4

2 に答える 2

1

Python の項目アクセス演算子は[], ではありません()

したがって、おそらくrdf12[i] = 0代わりに必要です。rdf12ただし、これは、既に 200 以上の要素を含む名前のリストがある場合にのみ機能します。rdf120、 、 ...という名前の実際の変数がある/必要な場合ではありません-そうでない場合は、コードをリファクタリングする必要があります(まだ可能ですが、そのソリューションは信じられないほどになるため、ここrdf121に投稿するつもりはありません醜い)。とにかく、これはあなたが使うべきものです:

rdf12 = [0 for i in range(200)]

これにより、200 個のゼロを含むリストが得られます。rdf12[0]その後、 、rdf12[1]、 ...を使用して要素にアクセスし、rdf12[199]他の値をそれらに割り当てることができます。

于 2013-09-18T01:08:17.857 に答える
0

この構文は関数を呼び出すために使用されるため、変数名の一部として括弧(を使用することはできません。の値で)関数を効果的に呼び出そうとしています。rdf12i

rdf12_0変数に、 などの名前を付けると、ローカル変数宣言の dict を返す関数をrdf12_1介してそれらにアクセスできる場合がありますが、この dict を変更しても機能することが保証されていないため、本当に悪い考えです。locals()

>>> rdf12_0 = 0
>>> lcls = locals()
>>> print(lcls['rdf12_0'])
0
>>> name = 'rdf12_' + str(0)
>>> lcls[name] = 34
>>> rdf12_0
34

代わりに、値をに保存することをお勧めしますlist

>>> rdf12 = [34, 12, 9, 97]
>>> rdf12[0]
34
>>> rdf12[1]
12
>>> for i in rdf12:
...     print(i)
... 
34
12
9
97
于 2013-09-18T01:16:10.080 に答える