我要收集一組變量列表的列表,比如我這樣做迭代:使轉換後的字符串變量
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