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中可变数据类型与不可变数据类型...相关推荐
- python中遍历结构可以是哪些数据类型_全!Python基础之原生数据类型、判断和循环、函数和文件操作合集...
长文预警! Python基础系列会将基础内容大致分为三到五个板块,每块着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python,希望可以帮你温习一下:如果你想入门Python, ...
- python应用程序开发者_用 NVIDIA ISAAC-SDK 在 Python 中开发机器人应用程序
图 1 .使用 Jupyter 笔记本和 ISAAC SDK Python API 在 ISAAC Sim 中控制虚拟机器人. NVIDIA ISAAC 软件开发工具包 的模块化和易于使用的感知堆栈继 ...
- python函数如何实现可变参数_【已解决】Python中实现可变参数的函数
[问题] Python中,希望实现一个可变参数的函数. [解决过程] 相关代码如下:(extractOK, extractedBlogUser, generatedBlogEntryUrl) = ca ...
- python关系表达式的结果只有两种值、分别是_关系表达式的结果只有两种值,分别是____和____。...
[判断题]当盾尾油脂密封在手动位时,不能按下每个位置的注脂按钮来进行手动注脂.( ) [简答题]What is trust? [填空题]Python语言中的运算符有三种,分别是____.____和__ ...
- python英语字典程序修改_详解如何修改python中字典的键和值
我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...
- python中两个集合的运算并交补_三种方式实现 Python 中的集合的交、并、补运算...
文章目录 三种方式实现 Python 中的集合的交.并.补运算 一 背景 集合这个概念在我们高中阶段就有所了解,毕业已多年,我们一起回顾一下几个集合相关的基本概念吧? 集合是指具有某种特定性质的具体的 ...
- python字典修改键所对应值_详解如何修改python中字典的键和值
我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...
- python pdb查看变量值_使用pdb模块调试Python
在Python中,我们需要debug时,有三种方式: 加log语句.最简单的方式是添加print()语句来输出我们想要获知的状态或者变量,好处是简单容易操作,坏处是debug完了之后,还需要将prin ...
- python变量必须以字母和下划线_【转载】关于python中带下划线的变量和函数的意义...
Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...
最新文章
- matlab optimvar
- 关于如如何运行tensorrt
- 通过lseek产生空洞文件
- where is SAP CRM One Order event callback registered
- 正则表达式 学习笔记4.3
- python核心模块之pickle和cPickle讲解
- 贴出一个php的批量搜索吧
- 移动互联网和Android给你带来的机会[轉]
- 最新全国暴雨强度公式2019_2019-2020最新全国高中排名
- Bailian3177 判决素数个数【入门】(POJ NOI0113-10)
- LNMP详解(二)——Nginx源码安装与启动
- mybatis与spring集成
- python爬虫语句_Python爬虫练手之爬句子迷
- Datawhale学习笔记【阿里云天池 金融风控-贷款违约预测】Task2 数据分析
- hadoop dremel Caffeine Pregel
- Open-set Adversarial Defense with Clean-Adversarial Mutual Learning
- [读书笔记]Core Java: Volume I - Fundamentals Chapter 1
- 百战终破黄金甲,不破楼兰终不还!
- “问天号”已就位!喻京川2013年畅想的《中国空间站》,即将启航星辰大海!...
- 生物工程学蛋白功能预测_海水中生长的工程细菌产生丝蛋白
热门文章
- BSP print implemented in BSPWD_BASICS print.htm
- use putty to log on OS
- 删除context node后遗留的问题
- Code Issues 2,637 Pull requests 0 Projects 1 Wiki Security Insights Settings 使用filter node快速找到XML f
- Spring MVC原理学习之how is return type handled
- SAP CRM Contact和Account的从属关系
- 使用HANA Web-based Development Workbench创建最简单的Server Side JavaScript
- java 字符表 chr3,VBS CHR码值对应列表
- c语言整数与平均值,编写求一组整数的和与平均值的程序
- 最长连续序列Python解法