- 深度学习:从Python到TensorFlow应用实战
- 叶虎
- 1039字
- 2020-08-28 19:50:29
2.3 简单数据类型
本节介绍包括数值、字符串和数组在内的简单数据类型。
2.3.1 数值
Python中有三种不同的数值类型:int(整数)、float(浮点数)和complex(复数)。
和Java或者C语言中的int类型不同。Python中的int类型是无限精度的。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3117.jpg?sign=1739623013-UcYVuE2K8qyzY6EHRYXRShiznL9uCU55-0-eae045213d6a443a750243074c7b9dd5)
Python依据IEEE 754标准使用二进制表示float(浮点数),所以存在表示精度的问题。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3119.jpg?sign=1739623013-ExKGwtm4IeFdk7SNzNz45LYGrNnZj5je-0-bfbb99dada9fc7abc2c53a459d9b6bff)
可以使用decimal模块使用十进制表示完整的小数。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3121.jpg?sign=1739623013-zBDy5HHZm7AyDtTkJoeAir5N2vQenZiM-0-30dff4385d7d88c2be8844877b131458)
在傅里叶变换中会用到复数。复数在Python中是一个基本数据类型(complex)。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3123.jpg?sign=1739623013-M0UTE6cOBaZ2ddpOaHwudceS1mokYNqz-0-28ddea4820d4e9fc3cac3a6674d06143)
一个复数有一些内置的访问器:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3125.jpg?sign=1739623013-Pgj6p3iIIyUf5ovjOGN3LVyEYv2bIeQY-0-c638bbdbd9f44441aeb06386047b2eb0)
几个内置函数支持复数:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_3126.jpg?sign=1739623013-2nmGLymlIA4WnCCCsxf2GN94LES4LRCu-0-f121bebba168801c9aeeddee51e2faf5)
标准模块cmath具有处理复数的更多功能:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_3128.jpg?sign=1739623013-Quelykzi78oAUddIk2ICl2WpUXKIhIia-0-460046c3dbc15a3e57c5b5633623f942)
用于数值运算的算术运算符说明见表2-1。
表2-1 算术运算符说明
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-T27_3129.jpg?sign=1739623013-ZcrCqPN7b4P4nlYkIwWyiZvDOjDH7gzT-0-33ae26d39be1c2b502dec69111ba20fb)
对于“/”运算,就算分子、分母都是int,返回的也将是浮点数。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_3131.jpg?sign=1739623013-lYiSQPx9nK4FbahTEfeJDGC1GAaoRk2Q-0-dee6f7890c3d4e74bc87c487df1e3bfe)
Python支持不同的数字类型相加,它使用数字类型强制转换的方式来解决数字类型不一致的问题。也就是说,它会将一个操作数转换成与另一个操作数相同的数据类型。
如果有一个操作数是复数,则另一个操作数被转换为复数:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_449.jpg?sign=1739623013-Raz6mS4cNeQVVeyHGegV6uEfLGKO79vb-0-c64fd88ed81184f665f157838eab462d)
整数转换为浮点数:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3133.jpg?sign=1739623013-sTGGov9oUwhQfFqg2LzCPMpPqCfHmal3-0-619f5a55ae61919f5768cae4b8903065)
Python代码中一般一行就是一条语句,但是可以使用斜杠(\)将一条语句分为多行显示。例子代码如下:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3135.jpg?sign=1739623013-MYXO4jB1y79IpUMt4yHHvFb5HkV0qjGG-0-67dcaf27c41bbfad1c6bb96546df2f3d)
2.3.2 字符串
可以使用方法strip()去掉字符串首尾的空格或者指定的字符。
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3136.jpg?sign=1739623013-QESkCwaW7nk2buvmtWcUl9EwvcQSQVxr-0-7325a2009e442ca29ad765253d0cda98)
使用方法split()将句子分成单词。例如下面的代码中,Mary是一个单一的字符串。尽管这是一个句子,但这些词语并没有表示成严谨的单位。为此,需要一种不同的数据类型,即字符串列表,其中每个字符串对应一个单词。使用方法split()可把句子切分成单词:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3138.jpg?sign=1739623013-COQDjkWFxKSu9Yg90YHLZsJzQbZqPloz-0-f6372f34b73df6c92a6a414eed740856)
split()方法根据空格拆分Mary,返回的结果是Mary中的单词列表。此列表包含函数len()演示的5个项目。对于Mary,函数len()返回字符串中的字符数(包括空格)。
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3140.jpg?sign=1739623013-WIUVjr1e4HIBfh9fw27zDgPRDFfVWjrc-0-ddc9d9074b47457605281d3d544b368c)
空白字符包括空格' '、换行符'\n'和制表符'\t'等。.split()分隔这些字符的任何组合序列:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3142.jpg?sign=1739623013-u6VcG38kY5clC91XT4Gb3tGVHmrG79mR-0-0000d656ba081195b52f4d42cae83456)
通过提供可选参数,.split('x')可用于在特定子字符串'x'上拆分字符串。如果没有指定'x',.split()只是在所有空格上分割,如上所示。
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3144.jpg?sign=1739623013-Z0WwWExUWA2F3ZNPgOMYfsBBdl1F4KCo-0-15354acdfe3ed24b931804b08f005b10)
但是如果想将一个字符串拆分成一个字符列表呢?在Python中,字符只是长度为1的字符串。函数list()将字符串转换为单个字母的列表:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3146.jpg?sign=1739623013-mR6UJm6E25AGpzFIHACdXbQkdLdiYiQx-0-78fe7f959653cd03553e284c1e4c70b1)
如果有一个单词列表,可以使用.join()方法将它们重新组合成一个单独的字符串。在“分隔符”字符串'x'上调用,'x'.join(y)连接列表y中由'x'分隔的每个元素。下面,mwords中的单词用空格连接回句子字符串:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3148.jpg?sign=1739623013-4BTvOuMS4bij6NekUGUP4iooT1SPmgUx-0-4007a2e3ad14b46ac9708bc4760f493d)
也可以在空字符串''上调用该方法作为分隔符。效果是列表中的元素连接在一起,元素之间没有任何内容。下面,将一个字符列表放回到原始字符串中:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3150.jpg?sign=1739623013-vpDiF8X4ptg1v8492EFKGlR99vbZWgO5-0-40c5dfc932ce13a76644ec3f2599ad7a)
一个字符串取子串的例子代码如下:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P30_3153.jpg?sign=1739623013-TEKrsckuRNKDs1riS7hWKJzJxbMtwyqz-0-884d99b4fb9fac3a2966ffdfd5caad15)
使用函数ord()和函数chr()实现字符串和整数之间的相互转换:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P30_3155.jpg?sign=1739623013-dWw2Otsh4yEXFsaLv8BNjfHvC0u5V3l5-0-ea2dd695930766fa5b5d12c76563f349)
2.3.3 数组
可以使用array(数组)存储同样数据类型的数值类型。通过import array导入Python的数组类型,就可以使用array类型。
例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P30_3157.jpg?sign=1739623013-9EGbI0zoZsnmRDpqwXwapmjtd8N26MtS-0-79238eb48ae4c57dbd5efc7770dd123b)