回答
Python中的所有類型都是引用類型。
訣竅是有些是可變的,有些不是。
int
s和
float
s是不可變的。值42不能改變。每次你給一個變量賦一個新值時,它都指向一個新值。
a
和b
都指代您的代碼中相同的數組。這就是爲什麼當您使用一個標識符修改數組時,您會看到使用其他標識符訪問該值時反映的變化。
對不起,但可變性與它無關。即使將OP的「0」和「1」替換爲諸如「[]」和「[[]]」之類的列表,效果仍然存在。 –
@RaymondHettinger - 你說得對。把它拉出來。我睡眠不足的想法試圖去某個地方,這是沒有意義的。 –
不用擔心。它發生在最好的:-) –
a = [0] # create an int, create a container referencing the int, let "a" reference the container
b = a # let "b" reference the same container as "a"
a[0] = 1 # create another int, let container "a" reference the new int
print b # "b" and "a" refer to the same container with the new contents
看到這個Python Tutor visualization爲更清楚地瞭解發生了什麼。
,如果你是複製一個列表
>>> a = [0]
>>> b = a[:]
>>> a[0] = 1
>>> a
[1]
>>> b
[0]
- 1. 爲什麼不能在VBA中像這樣從列表框中選擇變量?
- 2. 這是在爲變量賦值,並直接在陣列工作,在IPython中
- 3. 這是什麼樣的Makefile變量賦值?
- 4. 爲什麼要爲變量「let」賦值?
- 5. 爲什麼這個布爾變量被賦值爲真?
- 6. Javascript,變量未被賦值...爲什麼?
- 7. Python:爲什麼類變量被賦值?
- 8. 爲什麼賦值不總是在Angular表達式中工作?
- 9. 如何將一個變量賦值給AWK中的另一個變量,爲什麼這段代碼不工作?
- 10. 這是爲什麼這樣工作?
- 11. C#爲什麼鏈接列表類變量在賦值後不保留其值?
- 12. NodeJS REPL:爲什麼這個變量賦值失敗?
- 13. 爲什麼這個變量賦值會引發錯誤?
- 14. 裝飾工爲什麼這樣工作?
- 15. 爲什麼這個簡單的賦值語句不工作(vba)?
- 16. 爲什麼這個遞歸函數像這樣工作?
- 17. 爲什麼變量=變量+1工作?
- 18. c#中這兩個變量賦值有什麼區別?
- 19. 我想了解這個變量賦值中發生了什麼
- 20. 爲什麼在這個變量賦值中引用兩個對象?
- 21. jQuery-爲什麼賦值給全局變量不起作用?
- 22. 變量賦值爲什麼在Bash中給出錯誤?使用
- 23. 它爲什麼這樣工作?
- 24. 爲什麼array_merge_recursive這樣工作?
- 25. VB.NET:爲什麼不能這樣工作?
- 26. 爲什麼這樣打破工作?
- 27. 爲變量賦值
- 28. 爲什麼這個變量正在像一個列一樣對待?
- 29. 爲什麼fopen()表現得像這樣?
- 30. 鍵值對F#列表變量賦值
有問題,你可以試試這個'B'是'了'參考。你能舉個例子說明你如何爲整數或浮點數做這個事情? –
因爲整數和浮點數不支持'a [0] = 1',或其他任何會使整數或浮點數變異的東西。 – user2357112
'print b'不打印1,它打印'[1]' – sisanared