当前位置: 首页 > 后端技术 > Python

Python基本数据类型-数值类型

时间:2023-03-26 12:04:47 Python

Python基本数据类型-数值类型为什么会有数据类型?[理解]更好的分配和管理内存方便,统一管理更贴近人类分类管理习惯数据类型类型[熟悉]数值类型:int、bool、float、complex序列类型:Immutable:str、tuple、bytes变量:list集合类型:set映射类型:dict数值类型介绍[熟悉]数值类型是不可变类型。所谓不可变类型,就是一旦类型的值不同了,就是一个全新的对象。数字1和2代表两个不同的对象,将变量重新分配给数字类型将创建一个新的数字对象。我还是想强调一下Python变量和数据类型的关系。变量只是对一个对象或代码名称、名称、调用等的引用。变量本身没有数据类型的概念。只有1,[1,2],"hello"这样的对象才有数据类型的概念。Python支持三种不同的数值类型:整数、浮点数、复数和布尔值。整数(int)简介[熟悉]整数通常称为整数,取值有正负之分,不带小数点。表示数字时,通常用十进制表示。有时我们也用八进制或十六进制来表示(理解)十六进制是用0x前缀和0-9,a-f来表示,例如:0xff00。在python中使用hex()将十进制转换为十六进制。八进制用0o前缀和0-7表示,比如0o45。在python中使用oct()将十进制转换为八进制。二进制用0b前缀和0-1表示,如0b11。python中使用bin()将十进制转为二进制整数内存[理解]python整数长度为32位,内存空间通常是连续分配的。从下面代码的内存地址来看,刚好相差32。小整数对象池[理解]Python在初始化的时候会自动创建一个小整数对象池,方便我们调用,避免后面重复生成!这是一个由262个指针组成的数组,指向-5到256范围内的整数对象。也就是说,比如整数10,即使我们没有在程序中创建它,它已经在后台悄悄地为我们创建了蟒蛇。作用:节省开销,提高运行速度Integerbuffer[理解]除了小整数对象池,Python还有整数buffer的概念,即刚刚删除的整数不会立即删除回收,而是会在后台Buffer一段时间,等待下一次可能的调用。注意:效果无法在交互式环境中演示。这个效果是在pycharm中实现的;并不代表小整数对象池中的值。浮点数(float)简介[熟悉]浮点数就是小数,比如1.23、3.14、-9.01等等。但对于很大或很小的浮点数,一般用科学计数法表示,10换成e,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等在。浮点数和整数之间的转换【掌握】复数(complex)【理解】复数由实部和虚部组成,可以用a+bj表示,或者complex(a,b),实部a和复数的虚部b都是浮点数。数学计算数学计算,除了上面提到的简单的加减乘除,更多的科学计算需要导入数学标准库,里面包含了我们可能需要的大部分科学计算函数。math.ceil(x)math.floor(x)math.pow(x)abs(x)round(x)importmath#importstandardlibrarymathprint(math.ceil(4.1))#5:roundupprint(math.floor(4.5))#4:rounddownprint(math.pow(2,3))#x**y2**3a=-10print(abs(a))#打印取绝对值后的值#python3改进后,不再四舍五入,而是四舍五入到50%evenprint(round(4.1))#四舍五入到4print(round(4.5))#四舍五入到4print(round(4.6))#enter1is5print(round(3.5))#45输入1,如果是偶数就输入1,否则Boolean和null值Boolean类型介绍【master】比如我们抛一枚硬币,不是正面就是反面。其实不管对错,0和1都是传统意义上的布尔类型。但是在Python语言中,布尔类型只有两个值,True和False。注意:第一个字母必须大写,不允许其他花哨的变体。bool()使用python内置的bool()函数来测试表达式的布尔值结果"""布尔类型应用"""print(2>3)#假2不大于3print(2<3)#True2小于3print(3in[1,2,3])#True3在列表[1,2,3]中print(3==9/3)#True3==3.0print(3is3.0)#False内存地址3!=3.0"""布尔函数"""print(bool(True))#Trueprint(bool(False))#False#value:00.0bool值为False,其余均为allTrueprint(bool(1))#Trueprint(bool(-1))#Trueprint(bool(0))#Falseprint(bool(0.0))#False#String:只有空字符串的bool值是False,并且其余的都是真的。注意:包含空格的字符串也是非空字符串print(bool("yes"))#Trueprint(bool(""))#Falseprint(bool(""))#Trueprint(bool("0"))#True#Listprint(bool([]))#Falseprint(bool([1,2,3]))#True#Noneprint(bool(None))#FalseNone的布尔值永远为False"""Booleancalculation"""print(True+1)#2print(False+1)#1归纳:数值类型:0,0.0bool值为False,其他为Truestring:空字符串bool值为False,其他均为True。请注意,空字符串是True列表:空列表的bool值为False,其他所有内容均为True。None的bool值始终为False布尔型运算布尔型运算如下:与运算或运算不是算术运算,注意:把True当作1,把False当作0。Python中的一个特殊值,用None表示(大写第一个字母)。None不能解释为0,因为0是整数类型,None是一个特殊的值。None也不是布尔类型,而是NoneType。string字符串的小技巧~在字符串中:print("hellonworld")n用于表示换行如果要打印n,需要加转义符如:print(hellonworld)使用三重引号marks(textformat)可以保留换行、空格等文本样式。注意:字符串的单引号和双引号是成对出现的,不能一边是单引号,一边是双引号。字符串是不可变的序列数据类型,字符串本身不能直接修改,就像数字类型一样!字符串存储[理解]思考:下面的值和字符串存储一样吗?答案是不同存储方式的介绍CPU:快,存储小硬盘:慢,存储大内存:比CPU慢,但比硬盘快。存储器比CPU大,但比硬盘小。16G1G=1024M1M=1024KB1KB=1024B1B=8bit字符串存储的整数在内存中占一个字节,无论中间内容多少,字符串都要单独存储。字符串的下标[keymaster]由于字符串是序列数据结构,我们可以通过下标取出字符串中的某个字母。下标也可以称为索引,默认从0开始。#取出'e'In[1]:name='helloworld'In[3]:name[1]Out[3]:'e'#helloworld#012345678910#取出out'e'为下标[1]#取出最后一个字符'd'In[1]:name='helloworld'In[4]:name[-1]Out[4]:'d'#取出'd'最后一个字符为下标[-1]#如果超过下标的值#会报错:IndexError:stringindexoutofrange取出的值是一片不可变字符串[key掌握]注意:分片左闭时index默认从0开始右开取单个字符时,index超出范围会报错。而且切片的时候不会报错。步长不能为0,也不允许是浮点数#切片时,左闭右开。例如:In[1]:name='helloworld'#取lloworldl下标为2,d下标为10In[2]:name[2:10]Out[2]:'lloworl'#closeleftand右开In[9]:name[2:11]Out[9]:'lloworld'#结束索引必须+1#取也可以到达最后一位。In[11]:name[2:]Out[11]:'lloworld'#不要写成默认的字符串类型转换[master]字符串组成方法[master]字符串添加字符串格式%s%d%fstr.format()python3.6.4引入f''字符串常用操作[熟悉]S.find(sub)-->返回元素的最小索引S.index(sub)-->返回元素的最小索引S.replace(old,new[,count])-->替换S.split(sep=None)-->用sep拆分字符串并返回列表。sep默认为None,split默认为空格S.startswith(prefix[,start[,end]])-->判断字符串是否以前缀开头,返回bool值。S.endswith(suffix[,start[,end]])-->判断字符串是否以后缀结尾,返回bool值。S.lower()-->将所有字符串转为小写S.upper()-->将所有字符串转为大写S.strip([chars])-->默认去除字符串周围的空格S.isalpha()-->判断字符串是否全为字母,返回bool值S.isdigit()-->判断字符串是否全为数字,返回bool值S.isalnum()-->判断字符是否为string全部为数字或字母,没有特殊字符,返回为bool值S.join(iterable)-->将序列中的元素与指定字符连接起来生成新的字符串"""字符串拼接"""#print('1'+'2')#字符串用+'12'拼接"""字符串格式"""name="hansen"age=20#%格式需要考虑数据类型#%s-->str#%d-->decimal#%f-->floatprint("%sageis%d"%(name,age))#str.format()好处一:不用考虑数据类型好处2:可以切换位置#{}-->占坑print("{1}is{0}".format(age,name))#f''python3.6.4以上#{}-->说明Pitprint(f"{name}is{age}")