python-3.x 为串行变量赋值

pkbketx9  于 2023-11-20  发布在  Python
关注(0)|答案(2)|浏览(149)

我想给序列变量赋值。比如:

data_1 = a
data_2 = 2*a
...
data_n = n*a

字符串
如何使用一个循环来做到这一点?

z9zf31ra

z9zf31ra1#

我不记得有什么用例是污染全局命名空间是有益的。在这些情况下,最好使用字典或列表(当你有连续的整数索引时):

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

m4pnthwp

m4pnthwp2#

for i in range(1,n+1):
     eval("data_"+str(i)+" = "+str(a*i))
     exec("print(data_"+str(i))")

字符串

相关问题