我要收集一组变量列表的列表,比如我这样做迭代:使转换后的字符串变量
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]
该怎么办?
我要收集一组变量列表的列表,比如我这样做迭代:使转换后的字符串变量
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]
该怎么办?
我认为你应该认真考虑重写你的代码给我们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)
我想你想要func列表来存储变量不是值。
试试这个:
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
编号的变量名是你应该使用一个列表,元组或字典,而不是一个标志。例如,在这里你可以使用一个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()
其实这只是一个例子。我想在最后制作一组图表和图例,我需要收集变量名称来执行此操作。'p1,= plot([1,2,3]) p2 = plot([3,2,1 ]) p3,= plot([2,3,1]) legend([p2,p1,p3],[“line 2”,“line 1”,“line 2”]) – Dalek 2014-09-25 01:21:39
@Dalek no you不要,你需要添加一个抽象层。您需要有1个(3个元素)列表,而不是有3个变量。每当你把一个数字放在一个变量名里,想想你是否可以把它写成一个列表。它会更好。 – 2014-09-25 01:24:12