先看一段代码:

x = []
y = x
y.append(10)
print(y)
print(x)

上面这段代码的输出结果如下:

[10]
[10]

为什么我只是给列表y追加了一个元素,而列表x也改变了???

产生这样的结果有两个原因:

(1)变量只是指向具体对象的名称,当在执行y=x语句时,并不会为列表创建一个副本,而只是创建了一个新变量y指向x所指向的同一个对象。这也就是说只存在一个对象(列表),x和y都只是对它的引用。

(2)列表属于mutable(可变)对象,这意味着可以改变它的内容。

在调用append()之后,这个可变对象的内容由[]变为[10]。由于两个变量都指向同一对象,因此使用任何一个名称所访问到的都是修改后的值[10]。

我们再来看一段代码:

x = 5
y = x
x = x + 1
print(x)
print(y)

上面这段代码的输出结果为:

6
5

通过前面的学习,输出结果好像不应该是一样的吗???

当然不!因为整数是immutable(不可变)对象,当我们执行x=x+1语句时,我们并不是改变5这个对象的值,而是创建一个新的对象(整数6)并将其赋值给x(也就是改变了x所指向的对象)。在赋值之后我们就有了两个对象(整数6和5)以及分别指向它们的两个变量(x指向6而y指向5)。

总结

1.如果我们有一个可变对象(list等),我们可以使用某些特定的操作来改变它,所有指向它的变量都会显示它的改变

2.如果我们有一个不可变对象(int等),所有指向它的变量都将显示相同样的值,只要是会改变这个值的操作都将总是返回一个新的对象

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑

获取一折本站知识星球优惠券,复制链接直接打开:

https://t.zsxq.com/y7uvZF6

本站qq群704220115。

加入微信群请扫码:

【Python基础】为什么更改列表'y'也会更改列表'x'?相关推荐

  1. Python基础进阶之路(三)之列表

    列表的定义 List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组 专门用于存储 一串 信息 列表用 [] 定义,数据 之间使用 , 分隔 列表的 索引 从 0 开 ...

  2. Python基础知识(二)基本数据结构list列表和dict字典

    介绍 list和dict,顾名思义,就是列表和字典,这是python中非常基础的数据结构,也是非常重要且用途最广的数据结构 列表list就是一串糖葫芦 list是python的一种内置数据结构,想象成 ...

  3. python基础对list的增删查改和列表的排序

    1.对list的增加,这个主要有三种方式 (1).采用append方法,append方法是在list表的尾部增加元素 list=[1,3,56,8,7]d=list.append("50&q ...

  4. Python基础知识学习05--数值,字符串,列表

    ##数据类型 ###数值 数值的声明 数组 '''声明一个数组,注意:在l的后面不要随意加空格符号''' l=[1,2,3] '''声明一个多钟类型嵌套的数组,这也是Python的一个特性''' l2 ...

  5. 【天池龙珠计划】Python训练营 Task02 Python基础练习:数据结构大汇总

    [天池龙珠计划]Python训练营 Task02 Python基础练习:数据结构大汇总 文章目录 [天池龙珠计划]Python训练营 Task02 Python基础练习:数据结构大汇总 一.列表 1. ...

  6. 万字长文爆肝Python基础入门【第二弹、超详细数据类型总结】

    目录 一.建立一个数据火车--列表 1.创建列表 2.列表元素的获取 3.列表元素的添加 4.列表元素的删除 5.列表元素的修改 二.列表的亲兄弟--元组 1.创建元组 2.元组元素的获取 3.元组和 ...

  7. python基础05

    python基础05 昨日内容回顾及作业讲解 列表:增  append  insert  extend 删 remove pop clear del 改  li[索引] = '被修改的内容'  li ...

  8. python基础学习_转行零基础该如何学习python?很庆幸,三年前的我选对了

    这似乎是一个如荼如火的行业,对于一直在思考着转行的我,提供了一个不错的方向. 这个行业当然就是python程序员,真正开始决定转行是在24岁的时候,到现在已经有三年多了,我从零开始,每天用业余两个小时 ...

  9. python基础总结--- 列表、内置函数(4-5)

    文章目录 6. 列表 6.1 列表的索引和切片 6.2 修改列表的元素值 6.3 列表的常用方法 6.3.1 添加元素append 6.3.2 添加元素 extend 6.3.3 插入元素insert ...

最新文章

  1. 主存储器是现代计算机系统的数据传送中心,第2章计算机体系结构习与题答案.doc...
  2. Hashtable学习笔记
  3. 二十三、Python数据建模(上),禁止转载
  4. 为什么SAP GUI里的传统事务码能通过Fiori Launchpad启动
  5. iOS库--.a与.framework
  6. vue+elementui中,el-select多选下拉列表中,如何同时获取:value和:label的值?
  7. 继承演练 c# 1613706361
  8. python变量的赋值操作_Python中关于变量赋值操作的实例分享
  9. c++ 友元函数,友元类
  10. 常用SQL语句优化技巧
  11. 怎样把网站js文件合并成一个?几种方法可以实现
  12. js JavaScript 求100以内的质数(素数)和合数 以及奇数和偶数
  13. cmos电路多余输入端能否悬空_CMOS电路不使用的输入端不能悬空
  14. 未来真的可以影响过去吗?人人都能看懂的波粒二象性和延迟选择量子擦除实验解释,通俗易懂量子物理
  15. 少儿编程语言有哪些分类,分别适合多大年龄的学生?
  16. 关于临时指针变量和其他临时变量的区别
  17. 多语言应用性能监控系统:Elastic APM
  18. 6开机白苹果一闪一灭_我的苹果6p突然死机,一直出现白苹果又黑屏,反复出现,无法开机,请...
  19. 球半比分,美职业:费城联合-华盛顿联 7月9日
  20. 大数据技术之Ranger

热门文章

  1. Linux 指令篇:档案目录管理--chown
  2. 关于Dictionary元素的遍历
  3. POJ2142-The Balance【扩欧】
  4. JavaScript-8(正则表达式)
  5. asp.net mvc cookie超时返回登录页面问题
  6. 1.Jenkins 在windows下的安装与配置
  7. 可变字典 添加 删除 遍历
  8. Mono.Android 基础
  9. (转)php-cli模式学习(PHP命令行模式)
  10. java验证码识别--2