从Python到空间分析Arcpy || 1.2.2 数据类型之1,2,3,4,5

接上期,介绍完了python数据的总概况,现在开始分布介绍不同的数据类型。本期介绍 数值 number。

数字数据类型用于存储数值。数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。实例在变量赋值时 Number 对象将被创建。

Python 支持三种不同的数值类型:
整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。如果使用python3以前的版本,int是有长度限制的,过长的数据如99999999999999999(想象一下,刚买了**,中了这么多钱),在python 2中 会以99999999999999999L 这样的方式保存,也即长整型,Python3 则没有这种顾虑。
浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
复数( complex) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型,与数学中复数概念一致,有兴趣的同学可以进一步了解。


通常我们都习惯使用十进制的数字0123456789来表达数值,当然在python里面你也可以使用使用十六进制和八进制来代表整数
十进制:正常表示即可 如999;
二进制:以0B或者0b开头:0b010、-0B010(注意开通是0,不是o)
八进制:以0O或者0o开头:0O123、0o456(注意开通是0,不是o)
十六进制:以0X或者0x开头:0X9a、0X89 (注意开通是0,不是o)

从Python到空间分析Arcpy || 1.2.2 数据类型之1,2,3,4,5

以下小段内容仅作为推荐选看

介绍完number的种类,下面重点解释一下这句话,

"数值类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。实例在变量赋值时 Number 对象将被创建。"中白色字体的内容。

何为不可以改变和重新分配内存,这点需要结合在一起理解,那么理解这两句话之前要先死死记住:

当把一个对象赋值给一个变量,其本质上是“将这个变量指向这个对象”

例如我们在编辑器里面敲入 a=3,那么在计算机中的过程就是,系统在内存中开辟了一个空间,这个空间里面保存的内容为3,同时建立了一个变量a,然后将a指向这个内存对象3,而不是创建了一个内容为3的变量a。

首先要明白这点,我们接着说不可以改变和重新分配空间,刚刚我们让a=3,如果接下来我们让a=3.0,那么对于python而言,其理解过程,就是python又创建了一个内容为3.0的内存空间,然后让刚刚创建的变量重新指向新的内存空间3.0,系统创建的用于保存3的内存空间,只能是3,是不可以改变的,说是3就是3,哪怕是3.0都不可以。
重新分配就是内存有创建了一个保存3.0的空间。

从Python到空间分析Arcpy || 1.2.2 数据类型之1,2,3,4,5

为了说明刚刚例子,小编把刚刚的内容用代码演示了一遍,首先我们创建了一个3的int内存空间,同时让变量a指向这个内存空间,我们使用id这个函数(这个函数在python中用来查看对象的内存空间(内存地址))来查看a指向的内存地址,为41514816。这个数字可可以理解为房间号,就是41514816房间里面住了一个为3的客人。

然后我们让a=3.0,我们就可以理解python又开辟了一个房间51107224让3.0来住,然后把原来指向41514816房间的变量a安排指向3.0的房间号51107224。

整个过程就是原来41514816房间里面的内容没有发生变化,然后又开辟了一个新的空间51107224,如下图:

从Python到空间分析Arcpy || 1.2.2 数据类型之1,2,3,4,5

最后一步我们又让变量b=3,查看b指向的内存空间,号码还是41514816,
这个其实不是这样,但是程序就是这样,目前只需先知道是这样,后面我们还会进一步解释。

和数值相关的python 包、内置函数

Python 中数学运算常用的函数基本都在 math 模块、cmath 模块和random模块,cmath包不常用,如果想使用首先需要import进来。

内置函数和math包

abs(x): 返回数字的绝对值,如abs(-10) 返回 10
ceil(x) : 返回数字的上入整数,如math.ceil(4.1) 返回 5
cmp(x, y): 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
math.exp(x): 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
math.fabs(x): 返回数字的绝对值,如math.fabs(-10) 返回10.0
math.floor(x): 返回数字的下舍整数,如math.floor(4.9)返回 4
int(x): 将x转换为整数
float(x): 将x转换为浮点数
max(x1, x2,…) : 返回给定参数的最大值,参数可以为序列。
min(x1, x2,…): 返回给定参数的最小值,参数可以为序列。
modf(x): 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
pow(x, y) : x**y 运算后的值。
round(x [,n]) : 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。
sqrt(x): 返回数字x的平方根

random包

choice(seq) :从序列的元素中随机挑选一个元素,比如random.choice([1,2,3]),从1到3中随机挑选一个整数。
randrange ([start,] stop [,step]): 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random(): 随机生成下一个实数,它在[0,1)范围内。
seed([x]): 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst): 将序列的所有元素随机排序
uniform(x, y): 随机生成下一个实数,它在[x,y]范围内。

OK,本小节关于number数据类型总概述先到这里,本期的作业,请将上面提到的每一个函数操练3遍以上,还是那句话,欢迎截图,截图越多的同学,今后的作业被选中,点评的概率越大。

本系列由解忧数据出品,找数据欢迎来
三w点jieyoudata点com(www.jieyoudata.com)
专注城市和地理空间数据

从Python到空间分析Arcpy || 1.2.2 数据类型之1,2,3,4,5