好吧所以下面的代码是我用来说明我的问题的示例代码,我是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的单个项目。任何帮助将不胜感激