查看原文
其他

Python基础——三大数字类型,你都了解吗?

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:温和铭 中南财经政法大学统计与数学学院

本文编辑:赵一帆

技术总编:陈   鼎

Stata&Python云端课程来啦!

       为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程Stata文本分析正则表达式网络爬虫基本字符串课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~

在学习编程语言时,我们的第一课往往是从认识基本的数据类型开始的,对于Python的学习也不例外。Python提供的基本数据类型包括:数字(Number)、字符串(String)、列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary)等,今天我们从最简单的数字(Number)开始介绍,内容包括各数字类型的定义及相互转化。


01数字类型概述
Python内置的数字类型包括:
  • 整型(int)

  • 浮点型(float)

  • 复数型(complex)

在我们为变量赋值时,Python将会自动创建数字类型的变量,例如:
x = 100 #整型y = 3.1415926 #浮点型z = 9j #复数型
此外,我们可以使用type()函数来核实Python中任何变量的类型:
print(type(x))print(type(y))print(type(z))

结果显示,x, y, z三个变量的数字类型与我们之前输入数值的类型是一致的。接下来,让我们看看这三大数字类型都有哪些特点吧。

1.1整型(int)

整数型数字就是数学中的整数,可正可负可为0,但没有小数位数。整数位数在32位系统上为32位;在64位系统上为64位,取值范围分别为[-2147483648, 2147483647]和[-9223372036854775808, 9223372036854775807]。此外,整数还有长整型(long)这一种类,但从Python2.2开始,系统会自动将发生溢出(即位数超过取值范围)的整数转换为长整数类型,故在此不再介绍。
x1 = 10y1 = 123456789101112z1 = -10987654321
print(type(x1))print(type(y1))print(type(z1))

1.2浮点型(float)

浮点型数字,也称浮点数,包括含有小数的正数或负数,用来处理数学中的实数。Python中的float型数字类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。浮点数中的“e”或“E”表示10的幂。
x2 = 3.00y2 = -5.89z2 = -37.8e100
print(type(x2))print(type(y2))print(type(z2))

与整型数相比,就不得不提到浮点数在计算中的缺陷:由于浮点数运算需要先将十进制转换为二进制计算,再将结果转换回十进制,且计算机存储位数有限,故计算时难免会产生误差,这对于一些精度要求高的计算将是致命的打击。好在我们可以通过调用Python中的十进制模块——decimal模块来解决转换误差问题,具体介绍见往期推文《decimal 进行无误差浮点数计算》

1.3复数型(complex)

复数型数字就是数学中的复数,由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
x3 = 2+3jy3 = 7jz3 = -7j
print(type(x3))print(type(y3))print(type(z3))

我们可以通过给定义的复数变量增加后缀,来求出该复数的实部、虚部或共轭复数:
a=1.6+0.99j #定义一个复数aprint(a.real) #输出a的实部print(a.imag) #输出a的虚部print(a.conjugate()) #输出a的共轭复数


02数字类型转换
我们可以使用int()float()complex()函数将数据从一种类型转换为另一种类型。

2.1 int()转换为整型

int()函数可将整数、浮点数、表示完整数字的字符串转化为整型数据,其基本语法为:
int(x,base) #x表示需要转换类型的对象,base表示x当前的进制数
注意:x和base两个参数都可省略,输入int()时,返回值为0。其中,省略base参数时,默认x为十进制。
(1)将整数转换为整型
由于整数原本就是整型数据,故输出的数据类型与输入类型一致。
In [1]: int(10)Out[1]: 10
(2)将浮点数转换为整型
当遇到浮点数时,int()将只保留数字的整数部分,而不会进行四舍五入。x为负小数时,int()的规则是向上取整。
In [2]: int(0.80)Out[2]: 0
In [3]: int(-9.99)Out[3]: -9
(3)将字符串转换为整型
当x为字符串时,使用int()函数主要是将其他进制转换为十进制,例如将二进制的字符串“1010”转换为十进制数:
In [4]: int('1010',2)Out[4]: 10
结果显示,在二进制下的“1010”,通过计算02^0+12^1+02^2+12^3得到了十进制下的10。接下来我们可以试试转换含有小数的字符串:
In [5]: int('9.99')
ValueError: invalid literal for int() with base 10: '9.99'
结果出现了报错,这是因为Python不能直接转换内含浮点型的字符串。这时,需要先将字符串转换成浮点型,才能转换成整型,我们将在接下来介绍float()函数时具体说明。

2.2 float()转换为浮点型

float()函数可以将整数、浮点数、含有浮点数的字符串转换为浮点型数据,基本语法为:
float(x) #将x转换为浮点型的数字
(1)将整数转换为浮点型
当x为整数时,float()函数将默认添加小数点后一位为零。
In [6]: float(123)Out[6]: 123.0
(2)将浮点数转换为浮点型
此时转换不会发生任何改变,不再赘述。
In [7]: float(5.8)Out[7]: 5.8
(3)将字符串转换为浮点型
当x是字符串时,转换的前提是x必须为表示十进制数字的字符串。我们在上一节中遇到的无法转换浮点型字符串为整型的问题,可通过如下代码解决:
In [8]: int(float('9.99')) #先将字符串'9.99'转换为浮点数9.99,再转换为整数9Out[8]: 9
Tips:eval()函数也能强制将字符串转换为数字,如输入eval(1.2),输出结果为1.2。但是在开发中,滥用eval()函数会产生系统安全问题,需要谨慎考虑此外,字符串前可以有+或-两种符号,空格也是允许添加的,这并不会影响最终输出的值。
In [9]: float(' -3.14')Out[9]: -3.14
2.3 complex()转换为复数型
complex()函数用于创建一个值为 real (实部)+ imag * j (虚部)的复数或者将整型、浮点型、复数型或字符串转换为复数型。基本语法为:
complex([real,[,imag]]) #创建或将输入值转换为一个形如"real+imag*j"的复数

注意:实部和虚部均可省略,如果未传递任何参数,即输入complex(),则返回值为0j;输入参数可以是任何数字格式,例如十六进制,二进制等;real可以为int、float、complex或字符串类型;而image只能为int、float或complex类型。

(1)将整数转换为复数型

In [10]: complex(1,2)Out[10]: (1+2j) In [11]: complex(1)Out[11]: (1+0j) In [12]: complex(0b1010,-1) #将二进制数1010作为实部,-1j作为虚部Out[12]: (10-1j)
(2)将浮点数转换为复数型
In [12]: complex(1.1,2.2)Out[12]: (1.1+2.2j)
此外,从Python 3.6开始,也允许在数字文字中使用下划线,例如:
In [13]: complex(10_000_000.00,-1.1)Out[13]: (10000000-1.1j)
(3)将复数转换为复数型
当输入的值含有复数时,转换仍然遵循”第一个参数+第二个参数乘以j”的计算规则。
In [14]: complex(1+2j,3)Out[14]: (1+5j) In [15]: complex(1+2j,3+4j)Out[15]: (-3+5j)
(4)将字符串转换为复数型
将字符串转换为复数时,不允许在字符串中使用空格。如果第一个参数为字符串,第二个参数则必须省略。
In [16]: complex('678')Out[16]: (678+0j)
In [17]: complex('6 7 8') #在字符串中含有空格ValueError: complex() arg is a malformed string
In [18]: complex('678',9) #第一个参数为字符串时,没有省略第二个参数TypeError: complex() can't take second arg if first is a string
可以看到,第二行和第三行的代码由于没有遵循complex()函数的语法规则,都出现了报错。注意:我们在Python中无法将复数转换为复数型以外的数字类型。
以上就是今天对Python中整型、浮点型和复数型这三大数字类型及其函数的基本介绍,希望对大家有所帮助~
END

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。



腾讯课堂课程二维码








            


 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!











往期推文推荐       如何用Stata绘制带指向性箭头标注的图像       Seminar丨荐仆贷款——19世纪中国的信任辅助贷款           【技能篇】多进程队列间通信

        Seminar丨公司董事会的人才增长:来自中国的证据

        正则表达式--懒惰模式

        爬完独立董事的年薪,我的眼镜跌破了!        识别旅游“照骗”——看风景名胜是否名副其实        主成分分析的Python实现

正则表达式--贪婪模式

Seminar丨谁更重要:高管股权薪酬与财务报告欺诈DOS能量,超乎你想象!

爬虫实战丨走进哈利波特的魔法世界

数据集合并的新路子-frlink命令

Seminar丨附近的公司:利用卫星图像研究本地信息优势

线性同余法生成伪随机数 

[技能篇]多线程爬虫

“好哭”是衡量一部好电影的标准吗?

Stata&Python云端课程来啦!

带你了解Stata中的矩阵

Seminar|总统的朋友:政治关联与企业价值
爬虫实战 | 爬取中国天气网

爬虫实战 | 爬取东方财富网经济数据——以居民消费价格指数(CPI)为例

Seminar|媒体关联董事对融资和外部治理的影响神奇的组内交叉合并 PDF分章节转TXT并实现可视化——以胡景北知青日记1971至1978年为例

万物皆可开——shellout妙用

无处不在的系列配置项|从零开始的Pyecharts(三)

使用Python制作自动聊天机器人  

fillin一下,平衡回来~

order命令——快速改变变量顺序的利器 Ajax应用场景——以获取雪球网港股代码及公司名称为例

播放列表中的歌单排行 

在Stata中轻松运用program编写命令

Meta Analysis in Stata17      

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存