2016-05-19 158 views
0

我已被分配爲我的Python課程的練習。目標是創建一些幾何對象作爲要通過某些斷言評估的Shape對象的子類。訪問列表的索引是列表

下面是代碼:

class Shape(object): 
    __metaclass__ = ABCMeta 
    def __init__(self, coords): 
     super(Shape, self).__init__() 
     self._coords = list(map(int, coords)) 

    def __getitem__(self, key): 
     return self._coords[key] 

    def move(self, distance): 
     self._coords = distance 

class Point(Shape): 
    def __init__(self, coords): 
     super(Point,self).__init__(coords) 

if __name__ == '__main__': 
    p = Point((0,0)) 
    p.move((1,1)) 
    assert p[0,0], p[0,1] == (1,1) # Check the coordinates 

的問題是,我怎麼能訪問在外形超類創建了列表索引COORDS的名單? 列表是否有可能使用另一個列表進行索引?

+2

可能不相關,但是'p [0,0],p [0,1] ==(1,1)'評估爲'p [0,0],(p [0,1] ==(1 ,1))' –

+0

有可能有這樣的:a = [1,1] 斷言[0],a [1] ==(1,1) – kotzimop

+0

a [0],a [1] = =(1,1)'將評估爲'(1,False)'。你可能想'assert(a [0],a [1] ==(1,1))'。相關:http://stackoverflow.com/q/37313471/1639625 –

回答

0

如果objdict,則可以使用確切語法obj[m,n]==v

任何hashable(大多數不可變)類型都可以用作字典鍵。元組(如(1,2))是可散列的。因此,有效的實例化一個字典:

>>> my_dict = { (1,2):'A', (6,7,8):'B' } 

可以對其進行索引:

>>> my_dict[1,2] 
'A' 
>>> my_dict[6,7,8] 
'B' 
>>> assert my_dict[6,7,8] == 'B' 

這種方法將允許您匹配斷言語法。

+0

謝謝。我會盡力把我的列表變成一本字典 – kotzimop

0

如果我正確理解你,你想訪問另一個列表中的列表中的元素。

爲此,您只需在單獨的一對方括號中編寫每個索引。

如果列表是nested_list = [ [1, 2] , [3, 4] ]您訪問項目4這樣的:

print(nested_list[1][0]) 

等於低於長期形式,這應該澄清如何鏈接索引查找UPS的工作原理:

inner_list = nested_list[1] 
print(inner_list[0]) 
+0

我很容易斷言我的Point實例:p [0],p [1] ==(1,1)。這是真的。但我必須明確地遵循練習的規則。問題是這對座標是這樣的列表p._coords = [1,1]。所以我不知道如何實現p [0,0],以便訪問它可以很容易地訪問的內容,p [0] – kotzimop