![深度学习:从Python到TensorFlow应用实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/281/31904281/b_31904281.jpg)
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=1738925109-eExQ730lF9fMeyW1Jz5YHkM83EdLHSnI-0-43398d7d61509ecd12303bb90220757b)
Python依据IEEE 754标准使用二进制表示float(浮点数),所以存在表示精度的问题。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3119.jpg?sign=1738925109-GNgtZRM4uNv07pClKfO2JSKhPtugiaZW-0-98a1745b0bd8047f19e5f7af992df2b5)
可以使用decimal模块使用十进制表示完整的小数。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3121.jpg?sign=1738925109-9gmTev4S4jvcgNjC40pKbj6NAHIeGW2h-0-72a6641805a8144f5922078e729432e6)
在傅里叶变换中会用到复数。复数在Python中是一个基本数据类型(complex)。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3123.jpg?sign=1738925109-4TYFmtiLeXcKGXS1lcaNTPxGKE3KLd0w-0-51febcaa63f0067e368aa14e1ac1845b)
一个复数有一些内置的访问器:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3125.jpg?sign=1738925109-Q8zv3sSYM4G8FWpGligckVhpnJTiCyvl-0-83e4e8a2ef86660bbec076ea1d7ccf6c)
几个内置函数支持复数:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_3126.jpg?sign=1738925109-YcKQhmzhK7VrtMOCzhY5IFPdji0Q3yLy-0-2234bbc8151d7b196504975709fbcb63)
标准模块cmath具有处理复数的更多功能:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_3128.jpg?sign=1738925109-mJzjNngieOCTPP8GfQd4TXoxkyUbLhgR-0-da8349cfd0278c1496178ef3b580c519)
用于数值运算的算术运算符说明见表2-1。
表2-1 算术运算符说明
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-T27_3129.jpg?sign=1738925109-dImuAFmhFq6lxrgIw5PMe1C4Zpx2vbJ1-0-e7b56f21c8850ac463dfa64cbdbc7d80)
对于“/”运算,就算分子、分母都是int,返回的也将是浮点数。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_3131.jpg?sign=1738925109-dM0zlrIbWCODyUCiyRQuY5fQgodspT09-0-74d8d7259fe4b8064cc1b5673d993ebb)
Python支持不同的数字类型相加,它使用数字类型强制转换的方式来解决数字类型不一致的问题。也就是说,它会将一个操作数转换成与另一个操作数相同的数据类型。
如果有一个操作数是复数,则另一个操作数被转换为复数:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_449.jpg?sign=1738925109-fqoJA0YJs7k2m4gXX7g2DdAgEqVCUbJT-0-15ff8353cf1bfea3f1a5b4b8ff9d75e9)
整数转换为浮点数:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3133.jpg?sign=1738925109-uLQUm1IWixkqpnOL5xgMTbxCdSGpNUvl-0-050b12fa5ef4be535274eb7badf5fc33)
Python代码中一般一行就是一条语句,但是可以使用斜杠(\)将一条语句分为多行显示。例子代码如下:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3135.jpg?sign=1738925109-FmCY3Ud571oUaGTiWt4u7n1tZ9bBZT76-0-aba71fd63b5c96dc22595dbfd03b1f27)
2.3.2 字符串
可以使用方法strip()去掉字符串首尾的空格或者指定的字符。
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3136.jpg?sign=1738925109-nd57owhb17BFkgIzTYhzalDYg4KVE0Gx-0-895cebe6b987d831a162399f225b43eb)
使用方法split()将句子分成单词。例如下面的代码中,Mary是一个单一的字符串。尽管这是一个句子,但这些词语并没有表示成严谨的单位。为此,需要一种不同的数据类型,即字符串列表,其中每个字符串对应一个单词。使用方法split()可把句子切分成单词:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3138.jpg?sign=1738925109-8kWvr0wU8FKfAhu02TjiwdBrSO1FEahL-0-01fe794fddc91861564985eb34111f2e)
split()方法根据空格拆分Mary,返回的结果是Mary中的单词列表。此列表包含函数len()演示的5个项目。对于Mary,函数len()返回字符串中的字符数(包括空格)。
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3140.jpg?sign=1738925109-aLfq3qAYMLbqXmyalT8UsmcPbmZjiaiZ-0-ea1b7fbc853fa41e22f00cdd06f154b1)
空白字符包括空格' '、换行符'\n'和制表符'\t'等。.split()分隔这些字符的任何组合序列:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3142.jpg?sign=1738925109-WA8ctANAp98zGPybRVHg9ZDj5GhR1pQq-0-32c7e574ed8abcee7a7f37d02cf3e46b)
通过提供可选参数,.split('x')可用于在特定子字符串'x'上拆分字符串。如果没有指定'x',.split()只是在所有空格上分割,如上所示。
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3144.jpg?sign=1738925109-fYlGsxJjh9o5O87DggkuiEU1NGaRI0jH-0-bae4b9de56060638bb693afb1929879f)
但是如果想将一个字符串拆分成一个字符列表呢?在Python中,字符只是长度为1的字符串。函数list()将字符串转换为单个字母的列表:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3146.jpg?sign=1738925109-pVsj75Fo38y3VwlKXwNzLNKFQgvqy6h4-0-b5184c8db5d54570f106283b3686546f)
如果有一个单词列表,可以使用.join()方法将它们重新组合成一个单独的字符串。在“分隔符”字符串'x'上调用,'x'.join(y)连接列表y中由'x'分隔的每个元素。下面,mwords中的单词用空格连接回句子字符串:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3148.jpg?sign=1738925109-7LhaBWk9Q7JTftFit3H6a1sIP0Y8984x-0-9c36a6c34b41e5903217abfebaec6610)
也可以在空字符串''上调用该方法作为分隔符。效果是列表中的元素连接在一起,元素之间没有任何内容。下面,将一个字符列表放回到原始字符串中:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3150.jpg?sign=1738925109-JTH8GP2B4E8uM0WURNYojjNs2PfFXOfY-0-074569a47161d229098d8ddbdec60bd7)
一个字符串取子串的例子代码如下:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P30_3153.jpg?sign=1738925109-MzrwS8ZwDvrwPYEvYvqfHRJdmnd6rQFc-0-fc4ee53423674dde3cc460142353a0c8)
使用函数ord()和函数chr()实现字符串和整数之间的相互转换:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P30_3155.jpg?sign=1738925109-AUmQ1c6kxnEp2uPNn8mZHI85Yo8MeVFD-0-d4223149fbfa7fa9ebab00a5c7fefdea)
2.3.3 数组
可以使用array(数组)存储同样数据类型的数值类型。通过import array导入Python的数组类型,就可以使用array类型。
例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P30_3157.jpg?sign=1738925109-BnVDN5hTWSapKQT0OpoEkMXofcRyVsUY-0-41d48ab6f24e8a2711dc2c8dd5591cce)