列出转换为变量的字符串

2024-04-19 21:23:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一组变量中收集一个列表,例如,我执行以下迭代:

x=10
func=[]
for i in range(10):
    globals()['p%s' % i]=i**2+x*10

最后我想要一个动态变量列表

func=[p0,p1,p2,p3,p4,p5,p6,p7,p8,p9]

怎么可能呢?你知道吗


Tags: in列表for动态rangefuncp2p3
3条回答

我认为您希望func list存储变量而不是值。你知道吗

试试这个:

x=10
func=[]
for i in range(10):
    globals()['p%s' % i]=i**2+x*10

for i in globals().keys():
    if i.startswith('p') and len(i)==2:
        func.append(i)

print func

有编号的变量名表示您应该使用列表、元组或dict。例如,这里可以使用list comprehension

x = 10
func = [i**2+x*10 for i in range(10)]

或者,您在注释中提到的示例(假设您使用的是matplotlib):

import matplotlib.pyplot as plt
data = [[1,2,3], [3,2,1], [2,3,1]]
for i, datum in enumerate(data, 1):
    plt.plot(datum, label='line {}'.format(i))
plt.legend()    
plt.show()

我认为您应该认真考虑将代码重写为us p[0],p[1],p[2],而不是p0,p1,p2;但是,这会得到相同的结果:

x=10
func=[]
for i in range(10):
    globals()['p%s' % i]=i**2+x*10
    func.append(i**2+x*10)

相关问题 更多 >