【发布时间】:2015-03-03 06:09:41
【问题描述】:
我设计了以下函数,它接受一个列表作为参数并返回另一个列表。
def function(list):
A = []
B = []
for num in list:
A.append(num)
B.append(A)
return B
在这个函数中,我假设该函数会根据 A 的当前状态将 A 附加到 A。在该假设下工作。我调用了函数
>>> test([1,2,3,4,5])
预期的输出是
[[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]
但是,我得到的结果是
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
这是为什么?有没有解决这个问题的办法?
【问题讨论】:
-
你正在做的是通过引用 A 的地址而不是 A 的值内容。因此最后它显示了 A 的重复内容,而不是显示它们存储时的值。基本的pythonic方法..正如@Paul Lo所建议/回答的那样。不,这不是问题,而是基本的python“属性”
标签: python list python-3.x for-loop