Python uncaught List变量的行为

时间:2013-09-21 07:41:19

标签: python python-2.7

任何人都可以解释我得到的输出。第一次变量lists为空白但data[i]10附加到lists[i]后变为

List:  [[10], [10, [10]]

我不知道这个长列表是怎么来的。我是python的新手来追踪它的行为。这是代码

data = [10, 20, 30]
list1 = list2 = list3 = list()
lists = [list1, list2, list3]

for i in range(len(data)):
  lists[i].append(data[i])
  print '-------------------'
  print 'at %s' %(i)
  print '  List:  %s' % (lists)
  print '  Data: %s' %  (data[i])

并回复

-------------------
at 0
 List:  [[10], [10], [10]]
 Data: 10
-------------------
at 1
List:  [[10, 20], [10, 20], [10, 20]]
Data: 20
-------------------
at 2
List:  [[10, 20, 30], [10, 20, 30], [10, 20, 30]]
Data: 30

2 个答案:

答案 0 :(得分:1)

这是无效的问题(它包含随后提供的其他代码的输出),您可能在解释器中多次运行第二个(初始化后)部分。代码的输出应该类似于

-------------------
at 0
  List:  [[10], [10], [10]]
  Data: 10
-------------------
at 1
  List:  [[10, 20], [10, 20], [10, 20]]
  Data: 20
-------------------
at 2
  List:  [[10, 20, 30], [10, 20, 30], [10, 20, 30]]
  Data: 30

在Python 2.7上测试

this question已经回答了“多次添加”的问题,因此我不会复制此信息。

答案 1 :(得分:0)

非常确定输出不是来自您发布的完整代码。它看起来很像你追加的列表(你只有一个,尽管所有名称list1,list2,list3和lists [i]引用它)并没有为每次循环运行创建新的,这样就完成了通过您发布的代码的第二行和第三行。