浅谈python连续赋值可能引发的错误

yipeiwu_com6年前Python基础

今天写的代码片段:

X = Y = []
..
X.append(x)
Y.append(y)

其中x和y是读取的每一个数据的xy值,打算将其归入列表之后绘散点图,但是绘图出来却是一条直线,数据本身并不是这样分布的。

反复检查后,发现是X = Y =[]这一句的错误。

在python中,形如X = Y的拷贝都是浅拷贝,X和Y是公用同一块空间的,一旦对它们其中的任意一个进行数据操作,都会改变该空间的内容,除非重新赋一块空间,改变其指向的位置。

因此只需要改成:

X = []
Y = []

就可以运行正确了。

拓展宽一点思考,对于函数来说:

def func(li,num):
 li.append(12)
 num = num + 1
W = [20,15]
a = 10
func(W,a)
print W,a

li和num也是浅拷贝的方式,但是在num = num + 1这一句中,num改变了其引用对象,因此不会改变其外界的值,而W会增加一个值。

以上这篇浅谈python连续赋值可能引发的错误就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python numpy 常用随机数的产生方法的实现

numpy 中 的random模块有多个函数用于生成不同类型的随机数,常见的有 uniform、rand、random、randint、random_interges 下面介绍一下各自的...

Python使用type关键字创建类步骤详解

Python使用type关键字创建类步骤详解

Python使用type关键字创建类 打开命令行窗口,输入python,进入python交互环境 python 一般创建类使用class关键字即可,测试命令如下: class Co...

对Python3 * 和 ** 运算符详解

在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法。 1. 算数运算 * 代表乘法 ** 代表乘方 >>> 2 * 5 10 >>...

Python3实现的旋转矩阵图像算法示例

本文实例讲述了Python3实现的旋转矩阵图像算法。分享给大家供大家参考,具体如下: 问题: 给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 方案一:先...

django框架面向对象ORM模型继承用法实例分析

本文实例讲述了django框架面向对象ORM模型继承用法。分享给大家供大家参考,具体如下: Django ORM对模型继承的支持,将python面向对象的编程方法与数据库面向关系表的数据...