亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用可變的現有變量創建重復 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 關注
  • 85 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號