使用 Python 3.8.10
我可以從 C 背景并且在 python3 中做一個專案,我注意到這一點:
a = [1,2,3,4]
b = a
a = [8]
print(b) // this gives [1,2,3,4]
但是當我做一個.clear
a = [1,2,3,4]
b = a
a.clear()
print(b) // this gives []
這是為什么?
uj5u.com熱心網友回復:
在您的第二個示例中,b是對a. a.clear()將底層串列變異為空,因此b也將是空的。在第一個示例中,a = [8]將分配一個新串列給a,但b仍指向之前對 的參考a。
如果我要把它翻譯成 C ,第一個例子可能看起來像這樣。(我不經常使用 C ,所以這段代碼可能很奇怪)
std::vector<int> v1 = {1, 2, 3, 4};
std::vector<int>* a = &v1;
std::vector<int>* b = a;
std::vector<int> v2 = {8};
a = &v2;
第二個例子看起來像
std::vector<int> v = {1, 2, 3, 4};
std::vector<int>* a = &v;
std::vector<int>* b = a;
(*a).clear();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/369004.html
標籤:蟒蛇-3.x
