为了账号安全,请及时绑定邮箱和手机立即绑定

使用可变的现有变量创建重复 n 次的列表

使用可变的现有变量创建重复 n 次的列表

慕后森 2023-01-04 16:18:09
我有一个 numpy 数组初始化,因为 A = np.array([[1,2,3],[4,5,6],[7,8,9]])我想创建一个列表C = [A, A, A, A]。我可以这样做C = [[A] * 4],但这会生成一个可变列表,更改一个元素将更改其他元素。我也知道我们可以通过这种方式克服这个问题:C = [np.array([[1,2,3],[4,5,6],[7,8,9]]) for _ in range(3)]但这会使代码冗长。使用 C = [A for _ in range(3)]没有帮助。我已经在下面验证:>>> R = np.array([[2,3,0], [6,78,8],[1,2,3]])>>> Rarray([[ 2,  3,  0],       [ 6, 78,  8],       [ 1,  2,  3]])>>> U = [R for _ in range(3)]>>> U[1]array([[ 2,  3,  0],       [ 6, 78,  8],       [ 1,  2,  3]])>>> U[2]array([[ 2,  3,  0],       [ 6, 78,  8],       [ 1,  2,  3]])>>> U[2][2,2]3>>> U[1][2,2]3>>> U[1][2,2] = 0>>> U[2][2,2]0>>> type(U)<class 'list'>我应该怎么做才能创建列表,每个内容都是独立的(即不可变的)?
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

你可以只使用.copy():


import numpy as np



R = np.array([[2,3,0], [6,78,8],[1,2,3]])

U = [R.copy() for _ in range(3)]


U[1][2,2] = 0


print(U)

给出:


[array([[ 2,  3,  0],

       [ 6, 78,  8],

       [ 1,  2,  3]]),

 array([[ 2,  3,  0],

       [ 6, 78,  8],

       [ 1,  2,  0]]),

 array([[ 2,  3,  0],

       [ 6, 78,  8],

       [ 1,  2,  3]])]


查看完整回答
反对 回复 2023-01-04
  • 1 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号