首頁  >  文章  >  後端開發  >  python中set集合屬於可變類型嗎

python中set集合屬於可變類型嗎

anonymity
anonymity原創
2019-06-13 09:36:227055瀏覽

什麼是可變/不可變物件

不可變物件,該物件所指向的記憶體中的值不能被改變。當改變某個變數時候,由於其所指的值不能被改變,相當於把原來的值複製一份後再改變,這會開闢一個新的地址,變數再指向這個新的地址。

可變物件,該物件所指向的記憶體中的值可以被改變。變數(精確的說是引用)改變後,實際上是其所指的值直接改變,並沒有發生複製行為,也沒有開闢新的出地址,通俗點說就是原地改變。

python中set集合屬於可變類型嗎

Python中,數值型別(int和float)、字串str、元組tuple都是不可變型別。而列表list、字典dict、集合set是可變類型。

還是看程式碼比較直觀,看看set集合的程式碼:

abb = {1, 2, 3}
acc = abb
print(id(abb), id(acc))
acc.add(4)
print(abb)  # {1, 2, 3, 4} 
print(id(abb), id(acc)) # 相等

可變物件由於所指物件可以被修改,所以無需複製一份之後再改變,直接原地改變,所以不會開闢新的內存,改變前後id不變。

當然不可變物件就不是這樣了, 可以和這個對比一下

abc = 3
dd = abc
dd = 43
print(abc)  # 3,并不随dd的改变而改变

但是如果是拷貝,就僅僅是將內容拷貝過去,傳遞的並是不引用。這在想使用清單的值又不想修改原始清單的時候特別有用。

blist = alist[:]  # or alist.copy()
print(alist is blist)  # False
blist.append(4)
print(alist)  # 还是[1,2 ,3]没有变化

以上是python中set集合屬於可變類型嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn