![深度学习:从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=1738894254-XiUSpo3HDrUfLGjvUu69xBWwT1rvJdan-0-9de689233ca357662e5cd56293bdd627)
Python依据IEEE 754标准使用二进制表示float(浮点数),所以存在表示精度的问题。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3119.jpg?sign=1738894254-6egBB92ogUMfaEB5ZYdgqmHDFTOg9ozm-0-a9e273985480c8245209359d50842bc7)
可以使用decimal模块使用十进制表示完整的小数。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3121.jpg?sign=1738894254-gjeDukJNGpkH6SUWD7fSyFmyJ1HeYciX-0-c4e3988122f073a10c0bcfe9e2346780)
在傅里叶变换中会用到复数。复数在Python中是一个基本数据类型(complex)。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3123.jpg?sign=1738894254-VDW6DjfoIz2JITrtyqjp0lGDhxlwKlzA-0-c3d840d48a7b40464532fe4e3c5c6528)
一个复数有一些内置的访问器:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P26_3125.jpg?sign=1738894254-pKVXCFIAYXl053ejKlWUEgz3dvwGcUob-0-653cba45843291363d821cb57da86ba8)
几个内置函数支持复数:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_3126.jpg?sign=1738894254-n3aapKzNOUuYHeTouBmNDgG0UKKEMu64-0-7a1443fa2bb331d2a1118edf88a2d010)
标准模块cmath具有处理复数的更多功能:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_3128.jpg?sign=1738894254-g5hSklZ8zt5HnFs74I5teHGEPCN1JpuD-0-2850eec84006992d159598de01da1d81)
用于数值运算的算术运算符说明见表2-1。
表2-1 算术运算符说明
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-T27_3129.jpg?sign=1738894254-bklnxU7FO251mko1Q8IpQFvZg5Picgp6-0-fb8d425db97d161df9c96a92e8dadf4f)
对于“/”运算,就算分子、分母都是int,返回的也将是浮点数。例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_3131.jpg?sign=1738894254-GSDrn8m5bssKwEbs1sr5UNsKVVOwUZPC-0-ff2c1bce0cf0eae5617b6f22ee273b2d)
Python支持不同的数字类型相加,它使用数字类型强制转换的方式来解决数字类型不一致的问题。也就是说,它会将一个操作数转换成与另一个操作数相同的数据类型。
如果有一个操作数是复数,则另一个操作数被转换为复数:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P27_449.jpg?sign=1738894254-cru1OtzQDvd93zL1cdDYe15H1dFKJFmg-0-57ceb5a722684f016a9b3531a6784096)
整数转换为浮点数:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3133.jpg?sign=1738894254-gMipdYm6mPYvTupzARzA6HyBgBjpwk59-0-802149847ee0f0c9caf395c45fdd04fc)
Python代码中一般一行就是一条语句,但是可以使用斜杠(\)将一条语句分为多行显示。例子代码如下:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3135.jpg?sign=1738894254-TinlACLmUfEM97LzAQVdZWvWSXU1F6yO-0-abc431b42e944ddd50188e72c4c07aaf)
2.3.2 字符串
可以使用方法strip()去掉字符串首尾的空格或者指定的字符。
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3136.jpg?sign=1738894254-o5Mtn61l0y9jY6rUYS4GC6Fo6N1dNZpD-0-d54850f95215239722f6ec386271ceb0)
使用方法split()将句子分成单词。例如下面的代码中,Mary是一个单一的字符串。尽管这是一个句子,但这些词语并没有表示成严谨的单位。为此,需要一种不同的数据类型,即字符串列表,其中每个字符串对应一个单词。使用方法split()可把句子切分成单词:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3138.jpg?sign=1738894254-PERDamcSHYbbA2ZfZLBQ6eaBqQrOwaT5-0-3dcf6e58fa3176eaba12beccf5d15ca2)
split()方法根据空格拆分Mary,返回的结果是Mary中的单词列表。此列表包含函数len()演示的5个项目。对于Mary,函数len()返回字符串中的字符数(包括空格)。
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P28_3140.jpg?sign=1738894254-A3BWX3J7oGgJVW3Y7equYQkAfZAeGUzV-0-efdd9a3c3beddaf906704a10e66b97f6)
空白字符包括空格' '、换行符'\n'和制表符'\t'等。.split()分隔这些字符的任何组合序列:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3142.jpg?sign=1738894254-vvaLIUgQW3B5AjjiVwdhMCIp9fr6TqUJ-0-a2803c4bd0482a3e6202088740636be2)
通过提供可选参数,.split('x')可用于在特定子字符串'x'上拆分字符串。如果没有指定'x',.split()只是在所有空格上分割,如上所示。
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3144.jpg?sign=1738894254-xMIQM1BXz6AtdtiqvK3AaFPOXxTOCiao-0-6656b19976a095726d1275f0cd2de428)
但是如果想将一个字符串拆分成一个字符列表呢?在Python中,字符只是长度为1的字符串。函数list()将字符串转换为单个字母的列表:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3146.jpg?sign=1738894254-bz0oEQnFdUbOHRVQWGG8jT140lIhps6i-0-16178ffdbae4a092f77a4cdc0c89c871)
如果有一个单词列表,可以使用.join()方法将它们重新组合成一个单独的字符串。在“分隔符”字符串'x'上调用,'x'.join(y)连接列表y中由'x'分隔的每个元素。下面,mwords中的单词用空格连接回句子字符串:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3148.jpg?sign=1738894254-1YN4CtObOzC3ThdEVdMqxbKregKJGTP3-0-72fe9bdf8be2464b381bb877003290fa)
也可以在空字符串''上调用该方法作为分隔符。效果是列表中的元素连接在一起,元素之间没有任何内容。下面,将一个字符列表放回到原始字符串中:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P29_3150.jpg?sign=1738894254-mloSSqvDgipDMFkYearcVJYylqgPGvwH-0-ca6ee36fd5322cbebaff502478a0e947)
一个字符串取子串的例子代码如下:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P30_3153.jpg?sign=1738894254-7bUIQ3myXzj7oaoyNTYLaMUhrKOy0XbH-0-3954881af8d2b85a5a1915ed04dc8efc)
使用函数ord()和函数chr()实现字符串和整数之间的相互转换:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P30_3155.jpg?sign=1738894254-EGLS8E3tRW8D7Ed356Tmb3xigltPekmz-0-6251164106b64ee88e8d9ee1f79c8d7f)
2.3.3 数组
可以使用array(数组)存储同样数据类型的数值类型。通过import array导入Python的数组类型,就可以使用array类型。
例如:
![](https://epubservercos.yuewen.com/39F6A5/17274856904200306/epubprivate/OEBPS/Images/Figure-P30_3157.jpg?sign=1738894254-oCreRYDdycZ8ZydK1YdQX9vf116CuXwi-0-c6eb246fd3cab44421716cb0b988158c)