2013-07-21 181 views
2

我試圖定義看起來像x1,x2,... xn,其中每個列表(每個列表都有5個元素)的k個變量。意思是:在for循環中定義變量

是這樣的:

 for i in [1..100]: 
       "x" + str(i) = [ i + 2, i + 3, i + 3, i + 2, i + 4] 
       print ""x" + str(i)", 'x' + str(i) 

    ideal output: 
       x1 = [3,4,4,3,5] 
       x2 = ... 
       x3 
       x4 
       . 
       . 
       . 
       x100 = 

我收到 '無效語法' 的消息。我願意接受任何可以讓我渡過這個相當簡單的障礙的事情。

+5

你肯定不希望打造百年變量,每個名爲'X1,X2,X3 ... '你不想創建一個包含一百個列表的列表嗎?這樣,你可以通過'x [0],x [1],x [2] ...' –

+0

來訪問它們。這聽起來像是一個更好的計劃。所以我會有一個巨大的名單?但是,最終我會在列表上做算術運算。我可以做一些像x [0] - x [1]的東西嗎? –

+0

@NilesBernoulli我想我們會更好地幫助你,如果你想知道你想要解決什麼問題。你現在的代碼看起來像是在試圖創建100個不同的列表,這看起來有點愚蠢。 –

回答

2

你想要的是列表的列表。隨着名單的理解,那會是

lists = [[i+2, i+3, i+3, i+2, i+4] for i in range(1, 101)] 

這相當於以下for循環:

lists = [] 
for i in range(1, 101): 
    lists.append([i+2, i+3, i+3, i+2, i+4]) 

而是寫作x1,你會寫lists[0]。如果你想要做的數學上的元素,

lists[3][2] - lists[6][3] 

將是你寫的是什麼,而不是

x4[2] - x7[3] 
+0

謝謝!這正是我正在尋找的。 –

0

您可以用classglobalslocals字典例如做到這一點:

class foo: pass 

setattr(foo, 'variable', 'value') 

print foo.variable 

__dict__另一個例子:

class bar: 
    def add_var(self, variable, value): 
     self.__dict__[variable] = value 
bar = bar() 
bar.add_var("variable", "value") 
print bar.variable 

一個例子與globals

globals()['variable'] = "value" 
print variable 

同樣與locals

locals()['var'] = "value" 
print var