Python 如何将另一个列表的当前状态(而不是迭代后的最终状态)附加到列表中?
下面是我的代码的简化版本(我使用循环进行一次迭代,只是为了“模拟”原始代码中的正常循环):Python 如何将另一个列表的当前状态(而不是迭代后的最终状态)附加到列表中?,python,list,for-loop,append,iteration,Python,List,For Loop,Append,Iteration,下面是我的代码的简化版本(我使用循环进行一次迭代,只是为了“模拟”原始代码中的正常循环): 将numpy导入为np b=[] 对于范围(1)中的i: a=np.零([5]) b、 附加(a) 对于范围(1)内的j: 对于范围(5)内的h: a[h]=h b、 附加(a) 结果b为: [array([0., 1., 2., 3., 4.]), array([0., 1., 2., 3., 4.])] 我想要的b是: [array([0., 0., 0., 0., 0.]), array([0.
将numpy导入为np
b=[]
对于范围(1)中的i:
a=np.零([5])
b、 附加(a)
对于范围(1)内的j:
对于范围(5)内的h:
a[h]=h
b、 附加(a)
结果b
为:
[array([0., 1., 2., 3., 4.]), array([0., 1., 2., 3., 4.])]
我想要的b
是:
[array([0., 0., 0., 0., 0.]), array([0., 1., 2., 3., 4.])]
试试这个,输出就是您所期望的:)嗨,欢迎使用SO!请参阅以获取有关设置问题中代码格式的帮助。简短版本:第一次执行
b.append(a)
,它只是对a
的引用,而不是副本。因此,当您稍后使用范围(5)中的h:a[h]=h修改a
时,您正在修改索引0处引用的同一对象。阅读此答案了解更多信息:
import numpy as np
b=[]
for i in range(1):
a=np.zeros([5])
b.append(a)
for j in range(1):
for h in range(5):
a[h]=h
b.append(a)
# print(b)
del b[0]
# b.append(c)
a=np.zeros([5])
b.insert(0, a)
print(b)