-3

谁能解释我得到的输出。作为第一次变量lists是空白的,但是当data[i]ie10附加到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
4

2 回答 2

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 上测试

这个问题已经回答了“多次添加”的方面,所以我不重复这个信息。

于 2013-09-21T07:48:19.880 回答
0

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

于 2013-09-21T07:49:44.333 回答