Python数据类型

来源:互联网 发布:手机淘宝红包怎么领取 编辑:程序博客网 时间:2024/06/13 10:23

数字常量

整型常量

>>>2**101024>>>a=input()0xa>>>a   #Python支持类似于matlab一样的只输入变量,打印变量的值'0xa'>>>print(a)0xa>>>int(0xa)10>>>print(int(0xa))10>>>

类似于上面的int函数将一个字符串转换为对应的整数,但也可以指定进制,按照指定进制转换为10进制

int('整数字符串', n) #转换整型字符串为n进制数>>>int('111')111>>>int('111',2)7>>>int('111',8)73>>>int('111',5)31>>> int('+12')12>>> int('-12')-12>>> int('-12.0')Traceback (most recent call last):  File "<stdin>", line 1, in <module>ValueError: invalid literal for int() with base 10: '-12.0'>>>

使用bin(x)、oct(x)和hex(x)

>>> bin(50)'0b110010'>>> oct(50)'0o62'>>> hex(50)'0x32'>>>

浮点数常量

12.5、2.、3.0、1.23e+10、1.23E-10都是合法的浮点数常量。可以用type函数查看数据类型

>>> bin(50)'0b110010'>>> oct(50)'0o62'>>> hex(50)'0x32'>>>

复数常量

副数常量为“实部+虚部”形式,虚部以j或J结尾。如2+3j、3-5J、2j。可用complex函数来创建负数。complex函数格式如下。

complex(实部,虚部)>>>complex(2,3)(2+3j)>>>(1-1j)(1-1j)>>>type(2+3j)<class 'complex'>>>>

布尔(bool)类型常量

bool类型数据有True和False两种值。True和False是两个预定义的内部变量。从面向对象的角度看,布尔类型是int类型的子类,True和False是布尔类型的示例。用于计算时,True对应的是整数1,False对应的整数0

>>> type(True) #输出True的类型<class 'bool'>>>> True==1 #测试True是否等于整数1True>>> True+3 #测试True用于加法4>>> isinstance(True, int) #测试True是否是int的实例True>>> True is 1 #测试True和1是否是同一个类型False>>>

数字常量

列出一些操作符,运算优先级从上往下依次递减。括号运算符优先级最高。

操作符说明举例**幂运算2**3~按位取反~5-负号-5*、%、/、//乘法、余数、除法、floor除法2*3、3%2、5/2、5//2+、-加法、减法2+3、2-3<<、>>想作为以、向右移位3<<2、12&按位与5&2^按位异或5^2|按位或5|<、<=、>、>=、==、!=比较运算...not逻辑非not True、not 2<3and逻辑与x>5 and x<100or逻辑或x<5 or x>100

Python遇到不同哦类型的数字参数运算时,总是将简单的类型转换为复杂的类型。

上面/真除法是普通除法。//为floor除法(截断除法)。"x//y"计算结果为不大于"x/y"的最大整数(如果两个操作数都是整数是,结果为整数,否则结果为float)

逻辑计算

以下值均为假:

NoneFalse各种数字类型的0,如0、0.0(0+0j)空的序列,如''(){}空的映射,如{}包含了返回值为0或False的 bool()或len()方法的用户自定义类的实例

比较运算

>>>a=1;b=3;c=5>>>a<b<c   #等价于a<b and b<cTrue>>>a==b<c  #等价于a==b and b<cFalse>>>a<b>c   #等价于a<b and b>aFalse

小数

由于硬件限制,浮点数缺乏精确度,因此

>>> 0.3+0.3+0.3+0.10.9999999999999999>>> 0.3-0.1-0.2-2.7755575615628914e-17>>>

创建

创建和使用小数对象

从Python2.4起,引入了一种新的数字类型:小数对象。小数可以看做固定精度的浮点数,他有固定的位数和小数点,可以满足要求精度的计算。

>>> from decimal import Decimal>>> Decimal('0.3')+Decimal('0.3')+Decimal('0.4')Decimal('1.0')>>> Decimal('0.3')-Decimal('0.2')-Decimal('0.1')Decimal('0.0')>>> type(Decimal('1.0'))<class 'decimal.Decimal'>>>> type(1.0)<class 'float'>>>>

小数的全局精度

可以使用decimal模块中的上下文对象设置小数的全局精度

>>> import decimal>>> Decimal('1')/Decimal('3')Decimal('0.3333333333333333333333333333')>>> decimal.getcontext().prec=5>>> Decimal('1')/Decimal('3')Decimal('0.33333')>>> Decimal('10')/Decimal('3')Decimal('3.3333')>>>

小数的临时精度

可以利用with语句创建临时的上下文对象,以设置临时的小数精度。 例如:

>>> from decimal import Decimal>>> import decimal>>> Decimal('1')/Decimal('3')Decimal('0.3333333333333333333333333333')>>> with decimal.localcontext() as local:...     local.prec=3...     Decimal('1')/Decimal('3')...     Decimal('10')/Decimal('3')...Decimal('0.333')Decimal('3.33')>>> Decimal('1')/Decimal('3')Decimal('0.3333333333333333333333333333')>>>

分数

分数对象明确的拥有一个分子和分母,分子分母保持最简。使用分数可以有效避免浮点数的不精确性。

分数使用fractions模块中的Fraction函数来创建。分数创建后可以用于各种计算。如:

>>> from fractions import Fraction>>> x=Fraction(2,8)   #创建分数>>> xFraction(1, 4)   #分数被保持最简>>> x+2Fraction(9, 4)>>> x-2Fraction(-7, 4)>>> x*2Fraction(1, 2)>>> x/2Fraction(1, 8)>>> print(x)   #print形式的打印,结果为下1/4>>> Fraction.from_float(1.25)   #使用Fraction.from_float函数将浮点数类型转换为分数Fraction(5, 4)>>>

数学函数

Python提供了用于数字处理的内置函数和内置模块

内置的常用数学函数

内置数学函数,无需导入模块

>>> abs(-5)5>>> bin(5)'0b101'>>> hex(20)'0x14'>>> oct(20)'0o24'>>> chr(65)   #int转字符'A'>>> ord('A')  #字符转int65>>> divmod(9,4)  #返回商和余数(2, 1)>>> a=5>>> eval('a*a+1')  #返回字符串中表达式的值26>>> max(1,2,3,4)4>>> min(1,2,3,4)1>>> pow(2,3)  #相当于2**38>>> round(1.56)  #保持整数四舍五入2>>> round(1.576,2)  #保持2位小数四舍五入1.58>>> round(1.5),round(-1.5),round(2.5)  #舍入部分刚好是5时,向偶数舍入(2, -2, 2)>>> sum({1,2,3,4})  #求和10>>>

math模块函数

Python提供了大量数学函数,导入math模块后可用

>>>import math>>> math.pi3.141592653589793>>> math.e2.718281828459045>>> math.inf  #浮点数的正无穷大,-math.inf表示负无穷大inf>>> math.ceil(2.3)  #返回不小于x的最小整数3>>> math.fabs(-5)  #绝对值5.0>>> math.factorial(0),math.factorial(5)  #返回非负数的阶乘(1, 120)>>> math.floor(2.3)  #返回不大于x的最大整数2>>> math.fmod(9,4)   #math.fmod(x,y)返回x除以y的余数1.0>>> x=[0.1,0.1,0.1,0.7]>>> sum(x)  #求和1.0>>> x=[0.1,0.1,0.1,0.1,0.1, 0.1,0.1,0.1,0.1,0.1]>>> sum(x)  #求和,由于浮点数原因存在不精确性0.9999999999999999>>> math.fsum(x)  #求和,math.fsum比sum更精确1.0>>> math.gcd(12,8)  #math.gcd(x,y)返回x和y的最大公约数4>>> math.trunc(15.67)  #math.trunc(x)返回x的整数部分15>>> math.exp(2)  #math.exp(x)返回e的x次方7.38905609893065>>> math.expm1(2)  #math.expm1(x)返回e的x次方减16.38905609893065>>>

原创粉丝点击