Python中的SyntaxError

时间:2013-09-18 01:03:49

标签: python-3.x

我对我的节目有一个快速的问题。我想为名为rdf12(i)的所有变量分配0,如rdf12(1) = 0 rdf12(2) = 0。这是我的代码:

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

但结果并不那么容易,我有一个错误说:

SyntaxError: can't assign to function call

那么如何编辑我的代码来修复它呢?

2 个答案:

答案 0 :(得分:1)

Python中的项目访问运算符是[],而不是()

所以你可能想要rdf12[i] = 0。但是,这仅适用于名为rdf12且已包含200多个元素的列表。如果您有/想要名为rdf120rdf121的实际变量,那么......如果不是这样你需要重构你的代码(虽然它仍然可能,但我不会去在这里张贴that solution,因为它会非常丑陋)。无论如何,这是你应该使用的:

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

这会给你一个包含200个零的列表。然后,您可以使用rdf12[0]rdf12[1],...,rdf12[199]访问这些元素,并为其指定其他值等。

答案 1 :(得分:0)

您不能将括号()作为变量名称的一部分,因为此语法用于调用函数。您实际上是在尝试使用值rdf12调用函数i

如果您为变量命名rdf12_0rdf12_1等,您可以通过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