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

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

使用for循環在python中分配數組值

使用for循環在python中分配數組值

慕少森 2022-06-28 17:53:13
在 Python3 中動態創建二維數組時,在以下情況下不會更新值:no_col = 3no_row = 4arr = [[0 for x in range(no_col)] for y in range(no_row)] for i in arr[0]:    i = 1arr 值0 0 00 0 00 0 00 0 0但是在使用范圍時,值會更新for i in range(no_col):    arr[0][i] = 1arr 值1 1 10 0 00 0 00 0 0為什么會這樣?
查看完整描述

3 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

這是因為你的每個

for i in arr[0]:
    i = 1

相當于

for idx in range(len(arr[0])):
    i = arr[0][idx]
    i = 1

您不能在 for each 循環中修改數組,因為每次迭代都會創建一個新變量,并且您正在修改新變量的值而不是數組

看看這個


查看完整回答
反對 回復 2022-06-28
?
米脂

TA貢獻1836條經驗 獲得超3個贊

a = b在 Python 中的作用存在誤解。


這并不意味著“修改a數據,使其與b數據相同”。


相反,它的意思是:“從現在開始,使用變量名a來引用由變量引用的相同數據b”。


請參閱此示例:


data = ['a', 'b', 'c']


x = data[0]  # x is now 'a', effectively the same as: x = 'a'


x = 'b'  # x is now 'b', but `data` was never changed


data[0] = 'm'  # data is now ['m', 'b', 'c'], x is not changed

data[1] = 'm'  # data is now ['m', 'm', 'c'], x is not changed

原始代碼也會發生同樣的情況:


for i in arr[0]:

    # i is now referencing an object in arr[0]

    i = 1

    # i is no longer referencing any object in arr, arr did not change


查看完整回答
反對 回復 2022-06-28
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

在 python 中,變量不是指針。


循環內部發生的事情是


1)for each element  in the array 

2)copy value of the array element to iterator(Only the value of the array element is copied and not the reference to its memory)

3)perform the logic for each iteration.

如果您對迭代器對象進行任何更改,您只會修改變量值的副本,而不是原始變量(數組元素)。


查看完整回答
反對 回復 2022-06-28
  • 3 回答
  • 0 關注
  • 249 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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