日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

goupby 两个值 结果变了_一道问题引出的python中可变数据类型与不可变数据类型...

發布時間:2023/12/19 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 goupby 两个值 结果变了_一道问题引出的python中可变数据类型与不可变数据类型... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 問題的提出

我們先來看兩個對比

第一道題,當對象為整數時,最終結果:b = 2, a = 1,b的變化沒有引起a的變化

第二道題,當對象為字典時,最終結果:a = {“name”:“jack”,“age”:27}, b = {“name”:“jack”,“age”:27},b的變化引起了a的變化

那么,為什么上述兩道題的結果會有如此大的區別呢?我們就來了解一下可變數據類型和不變數據類型

二. 可變數據類型和不可變數據類型

  • 可變數據類型有:列表list、字典dict
  • 不可變數據類型有:整型int、浮點型float、字符串string和元組tuple

python中有一個id()函數,可用來獲取對象的內存地址,我們針對第一題,可以看一下a和b指向的對象的內存地址有什么變化

我們可以清晰的看到,a = 1, b = a,這兩個操作中,變量a和b指向的對象的內存地址是一樣的,也就是說a和b其實引用了同一個對象1。那為什么整型是不可變數據類型呢?這里可以理解為a和b的引用地址處的值是不能被改變的,也就是1814284368地址處的值在沒被垃圾回收之前一直是1,不能改變,如果把b賦值為2,那么,只能把b的引用地址從1814284368變為1814284400,相當于b += 1這個賦值又創建了一個新的對象2,然后變量a仍然指向對象1,而變量b指向了對象2,變量b的變化并不會引起a的改變,因為它們指向的是不同的對象

我們大概畫個演示圖:

圖一:a = 1, b = a

圖二: b += 1

我們再來看字典,先用id()看一下內存地址的變化

可以看到,變量a和b同時指向一個字典對象,當給變量b指向的字典添加元素后,b指向的字典的內存地址并不會發生變化,也就是說,對b的操作不會改變a引用的地址值,相當于同樣一個地址得到了擴充,由于a和b指向同一個地址,所以b的變化會引起a的變化

圖一:a = {“name”: “Jack”}, b = a


圖二:b[“age”] = 27

轉自:一道問題引出的python中可變數據類型與不可變數據類型 - My&Captain - 侵刪

總結

以上是生活随笔為你收集整理的goupby 两个值 结果变了_一道问题引出的python中可变数据类型与不可变数据类型...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。