提问人:Renyun Zhang 提问时间:11/6/2023 最后编辑:S.BRenyun Zhang 更新时间:11/6/2023 访问量:69
为序列变量赋值
Assign values to serial variables
答:
-2赞
Chris P
11/6/2023
#1
for i in range(1,n+1):
eval("data_"+str(i)+" = "+str(a*i))
exec("print(data_"+str(i))")
评论
0赞
Renyun Zhang
11/6/2023
谢谢。但是,使用代码弹出错误“SyntaxError: invalid syntax”。
0赞
S.B
11/6/2023
#2
我不记得任何用例污染全局命名空间是有益的。在这些情况下,最好使用字典或列表(当您有连续整数索引时):
a = 10
d = {f'data_{i}': a * i for i in range(1, 10)}
print(d['data_2']) # 20
但是现在,我认为您甚至不需要存储它们。您可以使用简单的功能轻松即时生成它们。
我将使用一个类来展示一种更详细的方法,该类为您提供了获取对象的 dict 语法:
class Data:
def __init__(self, a) -> None:
self.a = a
def __getitem__(self, item: str):
_, n = item.split("_")
return self.a * int(n)
d = Data(10)
print(d["data_2"]) # 20
评论
0赞
AKX
11/6/2023
这里也没有必要使用字典——列表会更好,因为我们谈论的是顺序。
0赞
S.B
11/6/2023
@AKX 是的,对。这只是一个示范。事实上,我们不需要任何种类的容器。这是一个简单的计算。
评论
eval()
variable_x
list