将转换后的字符串列表转换为变量

时间:2014-09-25 01:09:37

标签: python list variables

我想从一组变量中收集一个列表,例如我做这个迭代:

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]

怎么可能呢?

3 个答案:

答案 0 :(得分:1)

编号的变量名称表示您应该使用list,tuple或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()

答案 1 :(得分:0)

我认为你应该认真考虑将你的代码改写为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)

答案 2 :(得分:0)

我认为您希望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