2017-02-09 56 views
-1
class A(object): 

    def setup(self): 

     self.array1 = [1,2,3] 
     self.array2 = [4,5,6] 
     self.array3 = [7,8,9] 

    def function(self): 

     for i in range(1,4): 

      for j in range(3): 

       #code goes here 
       #code goes here 

現在這裏是重要的一點:有沒有一種方法可以輕鬆訪問動態調用數組的索引,如arrayi[j],並且能夠輕鬆存儲它/並將其作爲參數傳遞給函數一條線?我知道,可以使用setattr(A, "array", "temp")將數組存儲到臨時變量中,然後從中訪問列表索引,但有沒有更簡單的方法來完成它?動態訪問方法內的變量? (Python)

+1

在你的'setup',你的意思'self.array1 = ...'等等?否則,您只需創建稍後不可用的局部變量。 – khelwood

+1

您可以列出一個列表。所以,不要做'arrayi [j]'(這是不可能的),你可以做'array [i] [j]'。 – spicypumpkin

+0

@ khelwood是的,忘記了。 – Dova

回答

2

也許你應該嘗試使用列表清單?事情是這樣的:

class A(object): 

def setup(self): 
    self.array = [ 
     [1,2,3], 
     [4,5,6], 
     [7,8,9] 
    ] 

def function(self): 

    for i in range(3): 

     for j in range(3): 

      # self.array[i][j] 
+0

完全忘了。在我的程序列表的大小和複雜性只是使多個列表看起來很好。但是有沒有一種方法可以達到我想要的效果,假設列表清單不可行? – Dova

+0

@Dova您可以動態創建屬性名稱作爲字符串,並使用'getattr(self,array_name)'其中'array_name ='array {}'.format(i)' – dizballanze

+0

但這真是醜陋的方法 – dizballanze

1

更Python的方式:

class A(object): 

    def setup(self): 
     self.array = [ 
      [1,2,3], 
      [4,5,6], 
      [7,8,9] 
     ] 

    def func(self): 
     for subl in self.array: 
      for num in subl: 
       # code here