《python 与数据挖掘 》一 2.2 数字数据

    xiaoxiao2024-05-24  113

    本节书摘来自华章出版社《python 与数据挖掘 》一书中的第2章,第2.2节,作者张良均 杨海宏 何子健 杨 征,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

    2.2 数字数据

    这节我们将探讨Python最基本的赋值语句和数字的数据类型。

    2.2.1 变量与赋值

    变量是我们广为熟悉的概念。程序语言中的变量和数学上的变量类似,如果需要对x赋值3,执行下面语句:

    x = 3这样程序将会为变量x申请地址并存储它。“=”的这个操作称为赋值。如果再执行:x*2

    6那么结果返回32的值,但注意运行后x的值仍为3,如果希望保存6的值,可写成x=x2或x=2。不过,Python的变量是不可变对象,读者可能会感到疑惑,x=2这个语句就已经让x的值发生了改变,为什么还说变量是不可变的呢?实际上,如果变量的值发生改变,Python会自动创建另一个对象申请另一块的内存,并改变变量的对象引用,如图2-1所示。

    这样做的优点是减少了重复的值对内存空间的占用,而缺点则是每次修改变量都需要重新开辟内存单元,给执行效率带来一定影响。下面的代码清单2-1给出了一个例子。 代码清单2-1 变量与赋值 print '''变量与赋值''' x=3 print x # result: 3 print id(x) # 查看x的内存地址,每次运行都会发生变化 #result: 39011144 x*=2 print x #result: 6 print id(x) # 再次查看x的内存地址,每次运行都会发生变化,但内存必然会变化 #result: 39011108

    *代码详见:示例程序/code/2-2.py

    2.2.2 数字数据类型

    数字的基本数据类型可分为整数、浮点数、布尔值。创建变量时,Python不需要声明数据类型,Python能够自动识别数据类型。x=3的数据类型是整数,而x=3.3的数据类型是浮点数,函数type(x)可以查看数据的数据类型。布尔值只有True和False两种值,支持and、not、or三种运算,这在2.1.4节中已经介绍到。和数学运算不同的地方是,Python的整数结果仍然是整数,如果操作符两端其中一个操作数是浮点数,那么运算结果是浮点数。如:1+2=>整数31.0+2=>浮点数3.0整数运算的结果永远是精确的,而浮点数运算的结果不一定是精确的。计算机的内存是有限的,无法存储无限位的小数。Python的浮点数实际上是双精度浮点数,在C中称为double类型,具体存储方式读者可以参考维基百科。举一个丢失精度的例子,如果在Shell输入:

    1/109*1090

    结果返回0,这是因为1除以10的9次方的数太小,计算机只存储到前面的0,除法过后返回了结果0,然后0乘以任何数都返回0,最后导致精度的丢失。所以在数值计算算法的设计上,常常要考虑精度丢失的问题,有时候一个好的办法是改变运算顺序:

    1*109/1091

    最新回复(0)