访问列表索引的列表

时间:2016-05-19 11:08:34

标签: python

我已经为我的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

问题是如何访问使用列表索引在Shape超类中创建的coords列表? 是否有可能使用其他列表索引列表?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您想要从另一个列表中的列表中访问元素。

为此,您只需将每个索引写在一对单独的方括号中。

如果您的列表为nested_list = [ [1, 2] , [3, 4] ],则可以访问4项,如下所示:

print(nested_list[1][0])

这等于下面的长形式,这应该澄清索引查找的链接是如何工作的:

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

答案 1 :(得分:0)

如果obj[m,n]==vobj,则可以使用确切的语法dict

任何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'

这种方法可以让你匹配断言语法。