列表與引用:了解 Python 中的變數賦值
在 Python 中,引用清單的變數可能會表現出意外的行為。考慮下面的程式碼:
<code class="python">v = [0] * 9 vec = v # Assign v's address to vec vec[5] = 5 # Modify vec at index 5 print(v) # Also prints [0, 0, 0, 0, 0, 5, 0, 0, 0]</code>
令人驚訝的是,列印「v」表示它也被修改了。這種行為一開始可能會令人困惑。
為什麼 'v' 會改變?
'v' 改變的原因是 vec 和 v 都是引用。當您指派 vec = v 時,您並沒有建立新清單。相反,您只需將 v 的位址(即記憶體指標)分配給 vec。
因此,vec 和 v 都指向記憶體中的同一個清單。對任一變數所做的任何更改都會影響基礎列表,這就是為什麼當修改 'vec' 時 'v' 也會更改。
建立單獨的列表
建立兩個單獨的列表,您需要執行淺複製:
<code class="python">vec = list(v)</code>
這將建立一個與「 v」具有相同值的新列表,但將其儲存在不同的記憶體位置。現在,修改 'vec' 不會影響 'v'。
以上是為什麼在Python中修改\'vec\'也會改變\'v\'?的詳細內容。更多資訊請關注PHP中文網其他相關文章!