為什麼在Python中修改\'vec\'也會改變\'v\'?

DDD
發布: 2024-11-03 04:08:31
原創
211 人瀏覽過

Why Does Modifying 'vec' Also Change 'v' in Python?

列表與引用:了解 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板