访问属于对象(类)的嵌套列表

时间:2017-07-22 22:23:56

标签: python-2.7

好吧所以下面的代码是我用来说明我的问题的示例代码,我是python的新手,我使用的是2.7并且我搜索了很多但没有成功。除一个问题外,所有代码都有效。

我的问题是对象(测试)属性在末尾打印的Nested_list显示为每个项添加+1的for循环>列表而是在所有3个列表中为第一个添加+1。我知道我正在使用的方法可以在普通列表上工作,但是对于对象来说它不太正确。

class Test(object): 
    def __init__(self):
        self.nested_lists = [[0]*10]*3

object_holder = [[]]*30

for x in xrange(0, 30):
    object_holder[x] = Test()

for objects in xrange(0, 30):
    for lists in xrange(0, 3):
        for items in xrange(0, 10):
            object_holder[objects].nested_lists[lists][items] += 1

object_holder[1].nested_lists[0][8] += 5
object_holder[1].nested_lists[2][5] += 12

print object_holder[1].nested_lists
print object_holder[1].nested_lists[0]
print object_holder[1].nested_lists[0][8]
print object_holder[1].nested_lists[2][5]

print object_holder[2].nested_lists
print object_holder[2].nested_lists[0]
print object_holder[2].nested_lists[0][8]
print object_holder[2].nested_lists[2][5]

结果

[[3, 3, 3, 3, 3, 15, 3, 3, 8, 3], [3, 3, 3, 3, 3, 15, 3, 3, 8, 3], [3, 3, 3, 3, 3, 15, 3, 3, 8, 3]]

[3, 3, 3, 3, 3, 15, 3, 3, 8, 3]

8
15

[[3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3]]

[3, 3, 3, 3, 3, 3, 3, 3, 3, 3]

3
3
这是为什么?当看起来我可以使用打印来定位个人列表和项目?我看过getattr和setattr但是我无法通过这种方法找到任何针对嵌套列表的内容。

这表示当我尝试定位可能的特定项目时,但出于某种原因,我目标的列表是不可定义的?我期待的结果是每个项目等于1,除了我添加5和12的单个项目。任何帮助将不胜感激

0 个答案:

没有答案