我对我的节目有一个快速的问题。我想为名为rdf12(i)
的所有变量分配0,如rdf12(1) = 0 rdf12(2) = 0
。这是我的代码:
for i in range(200):
rdf12(i) = 0
但结果并不那么容易,我有一个错误说:
SyntaxError: can't assign to function call
那么如何编辑我的代码来修复它呢?
答案 0 :(得分:1)
Python中的项目访问运算符是[]
,而不是()
。
所以你可能想要rdf12[i] = 0
。但是,这仅适用于名为rdf12
且已包含200多个元素的列表。如果您有/想要名为rdf120
,rdf121
的实际变量,那么......如果不是这样你需要重构你的代码(虽然它仍然可能,但我不会去在这里张贴that solution,因为它会非常丑陋)。无论如何,这是你应该使用的:
rdf12 = [0 for i in range(200)]
这会给你一个包含200个零的列表。然后,您可以使用rdf12[0]
,rdf12[1]
,...,rdf12[199]
访问这些元素,并为其指定其他值等。
答案 1 :(得分:0)
您不能将括号(
和)
作为变量名称的一部分,因为此语法用于调用函数。您实际上是在尝试使用值rdf12
调用函数i
。
如果您为变量命名rdf12_0
,rdf12_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