如何使用循环访问嵌套列表中的对象

时间:2019-07-17 08:53:19

标签: python python-3.x class nested-lists

当使用标准的for循环方法遍历对象的嵌套列表时,我收到错误 AttributeError:“列表”对象没有属性“ val”

我正在寻找一种从嵌套对象中返回这些值的方法

class Class:
    def __init__(self,val,var_1 = True,var_2 = False,var_3 = True):
        self.val = val
        self.var_1 = var_1
        self.var_2 = var_2
        self.var_3 = var_3

    def print_num(self):
        return self.val


block = [[Class("O") for x in range(10)] for y in range(10)]

print(block[0][0].val) # this works returns "O" or correct var bool value

for x in block:        #This doesn't work 
    print(x.val)

['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']

寻找此回报或类似的结果

2 个答案:

答案 0 :(得分:3)

问题出在您的for循环中。

您正在对列表列表的块使用and迭代器。 然后,通过执行x.val,您尝试访问列表的val属性,该属性不存在。

尝试像for y in x一样在x上迭代一次。

答案 1 :(得分:2)

您忘记了嵌套的for

for x in block:
    for y in x:
        print(y.val)