python列表奇怪的行为

时间:2016-02-19 07:27:23

标签: python python-2.7

import numpy as np

x = np.array([1,2,3])
xlist = []
Xlist = []
for i in range(1):
    xlist.append(x**(i+1))
    Xlist.append(xlist)
xlist.append(x**2)
Xlist.append(xlist)
Xlist

然而,输出是

[[array([1, 2, 3]), array([1, 4, 9])], [array([1, 2, 3]), array([1, 4, 9])]]

但是,我不知道为什么结果不是下面的表达式,我想得到下面的结果,如何实现呢?

[[array([1, 2, 3])], [array([1, 2, 3]), array([1, 4, 9])]]

1 个答案:

答案 0 :(得分:0)

您需要首先创建列表的副本,然后append sqaured array。

new_list = xlist+x**(i+1)
xlist.append(new_list)

您的问题正在发生,因为附加后np.array作为参考传递,因此如果您在列表外更改它,则值也会在列表中更改。