- 本书赞誉
- 前言
- 目标读者
- 不适合阅读本书的读者
- 本书结构
- 什么是数据处理
- 遇到困难怎么办
- 排版约定
- 使用代码示例
- 致谢
- 第 1 章 Python 简介
- 第 2 章 Python 基础
- 第 3 章 供机器读取的数据
- 第 4 章 处理 Excel 文件
- 第 5 章 处理 PDF 文件 以及用 Python 解决问题
- 第 6 章 数据获取与存储
- 第 7 章 数据清洗:研究、匹配与格式化
- 第 8 章 数据清洗:标准化和脚本化
- 第 9 章 数据探索和分析
- 第 10 章 展示数据
- 第 11 章 网页抓取:获取并存储网络数据
- 第 12 章 高级网页抓取:屏幕抓取器与爬虫
- 第 13 章 应用编程接口
- 第 14 章 自动化和规模化
- 第 15 章 结论
- 附录 A 编程语言对比
- 附录 B 初学者的 Python 学习资源
- 附录 C 学习命令行
- 附录 D 高级 Python 设置
- 附录 E Python 陷阱
- 附录 F IPython 指南
- 附录 G 使用亚马逊网络服务
- 关于作者
- 关于封面
2.3 各种数据类型的用途
每种基本数据类型都可以做各种各样的事情。下面列出了我们目前学过的数据类型,并举例说明这些数据类型所能做的各种事情。
· 字符串
o 大小写转换
o 删除字符串末尾的空格
o 分割字符串
· 整数和小数
o 加减运算
o 简单数学运算
· 列表
o 在列表中增加或删除元素
o 删除列表的最后一个元素
o 列表重新排列
o 列表排序
· 字典
o 增加一个键 / 值对
o 将指定的键设置为新的值
o 利用键查找值
在上面这个列表中我们故意没有提到变量。变量能做的事情取决于它包含的数据。比如说,如果变量是一个字符串,那么它可以做所有字符串能做的事情。如果变量是一个列表,那么它可以做只有列表才能做的各种事情。
把数据类型看作名词,把它们能做的事情看作动词。在大多数情况下,数据类型能做的事情被称为方法(method)。想要访问数据类型的方法,或者说让数据类型做一些事情,你可以用点号(.)。比如说,如果你将一个字符串赋值给名为 foo 的变量,你可以输入 foo. strip() 来调用该字符串的 strip 方法。我们来看一下其中一些方法的作用。
在调用字符串的方法时,它们的行为是 Python 默认库的一部分(类似于手机上预装的默认应用),所有 Python 版本共享这一默认库。在每一台运行 Python 的计算机上都可以调用这些方法,因此每一个 Python 字符串都可以共享相同的方法(就像每一台手机都可以打电话,每一台苹果手机都可以发送 iMessage 一样)。Python 标准库(也叫作 stdlib,https://docs.python.org/2/library/)中包含了大量的内置方法和基本数据类型,其中包括你正在使用的 Python 数据类型。
2.3.1 字符串方法:字符串能做什么
回头看最开始定义的变量 filename。我们开始时用 filename = 'budget.csv' 来定义变量。这种定义方法很方便。但有些时候,事情并没有那么简单。来看几个例子:
filename = 'budget.csv '
注意,现在 filiname 字符串里有许多多余的空格,可能需要将其删掉。可以用 Python 字符串的 strip 方法,这是一个内置函数,可以从头到尾删除字符串中多余的空格:
filename = 'budget.csv ' filename = filename.strip()
如果你没有对变量重新赋值的话(令 filename 等于 filename.strip() 的输出值),你对 filename 所做的修改不会被保存。
在 Python 解释器中输入 filename,现在你应该可以看到,空格已经被删除。
比如说,文件名需要全部用大写字母。可以用 Python 字符串内置的 upper 函数将所有的字母转换成大写:
filename = 'budget.csv' filename.upper()
从输出应该可以看出,现在文件名已经全部大写了:
'BUDGET.CSV'
在这个例子中,我们没有将大写的字符串重新赋值给变量 filename。在解释器中再次调用 filename 时会发生什么?输出应该还是 'budget.csv'。如果你不希望修改你的变量,只想对变量进行转换后使用一次,可以调用类似 upper 这样的方法,这些方法会返回修改后的字符串,但不会改变变量本身。
如果想对变量重新赋值,用同一个变量名保存返回值,应该怎么办呢?接下来,将变量 filename 的值改成全部大写:
filename = 'budget.csv' ➊ filename = filename.upper() ➋
❶ 在本行之后调用 filename,输出是 'budget.csv'。
❷ 在本行之后调用 filename,输出是 'BUDGET.CSV'。可以将代码压缩成一行来运行:
filename = 'budget.csv'.upper()
代码的行数有时是你个人的风格或偏好。你可以随意选择你认为合理的方式,但要保持代码清晰、易读、明了。
在上面这些例子中只讲了两个字符串方法:strip 和 upper,但还有许多其他的内置字符串方法。随着在数据处理过程中遇到更多的字符串,我们会学习更多的字符串方法。
2.3.2 数值方法:数字能做什么
整数和浮点数 / 小数都是数学对象。如果你输入 40 + 2,Python 会返回 42。如果你想把结果保存在变量中,可以将其赋值给一个变量,正如我们在字符串的例子中所做的那样:
answer = 40 + 2
现在你输入 answer,得到的返回值是 42。整数能做的大部分事情都是可以预知的,但有可能你需要使用一些特殊的格式,这样 Python 解释器才能理解你想做的数学运算。例如,如果你想计算 42 的平方,那你需要输入 42**2。
整数、浮点数和小数也还有许多其他的方法,我们会在学习数据处理的过程中遇到其中一些方法。
加法和减法
对于 Python 的其他数据类型,你也可以做加法,例如字符串和列表。试一试下面的代码:
'This is ' + 'awesome.'
和
['Joker', 'Simon', 'Ellie'] + ['Lishka', 'Turtle']
试试用减法,看看会发生什么?运行下面的代码会报错,你能从中学到什么?
['Joker', 'Simon', 'Ellie', 'Lishka', 'Turtle'] - ['Turtle']
你应该会得到报错信息:TypeError: unsupported operand type(s) for -: 'list' and 'list'。这告诉我们,Python 列表支持加法,却不支持减法。这是因为Python 开发人员对每种数据类型支持的方法所做的选择。如果你想了解如何对列表做减法,可以查看 Python 官网上列表的 remove 方法(https://docs.python.org/2/tutorial/datastructures.html)。
2.3.3 列表方法:列表能做什么
列表有几个必须知道的方法。我们从一个空列表开始,用一个方法来添加元素。
首先,像这样定义一个空列表:
dog_names = []
在解释器中输入 dog_names,返回的是 [],这是 Python 显示空列表的方式。在本章前面的内容里,这个变量中保存了好几个名字,但在上一行代码中我们重新定义了这个变量,现在它是一个空列表。内置的 append 方法可以向列表中添加元素。现在利用这一方法将“Joker”添加到列表中:
dog_names.append('Joker')
现在输入 dog_names,返回的列表中将包含一个元素:['Joker']。
下面你自己来操作,利用 append 方法创建这样的列表:
['Joker', 'Simon', 'Ellie', 'Lishka', 'Turtle']
比如说,你不小心添加了一个猫咪的名字,'Walter':
dog_names.append('Walter')
你可以利用 Python 列表内置的 remove 方法删除这个元素:
dog_names.remove('Walter')
列表还有许多其他的内置方法,但 append 和 remove 是其中最常用的两个。
2.3.4 字典方法:字典能做什么
为了学习一些有用的字典方法,我们来从头创建一个动物数量的字典。
在下面的例子中,我们创建了一个空的字典。然后添加了一个键,并给定了这个键对应的值:
animal_counts = {} animal_counts['horses'] = 1
向字典添加元素(animal_counts['horses'])与向列表添加元素略有不同。这是因为字典既有键又有值。在上面的例子中,键是 'horses',值是 1。
我们用动物数量来定义字典的其他部分:
animal_counts['cats'] = 2 animal_counts['dogs'] = 5 animal_counts['snakes'] = 0
现在在 Python 解释器中输入 animal_counts,你应该会得到以下字典:{'horses': 1, 'cats': 2, 'dogs': 5, 'snakes': 0}。(Python 字典不会保存元素的顺序,所以你看到的输出可能会有所不同,但应该包含相同的键值对)。
这里讲的是一个非常小的例子,但是编程并非总是这样方便。试想由世界上所有家畜的数量构成的字典。作为程序员,我们可能不知道这个 animal_counts 字典中包含的所有动物种类。在处理一无所知的大型字典时,我们可以利用字典方法来了解字典的更多内容。下面这个命令返回字典包含的所有键:
animal_counts.keys()
如果你把前面的练习都做了,那么在解释器中输入上面的代码会返回一个键的列表,如下所示:
['horses', 'cats', 'dogs', 'snakes']
对于上面任何一个键,你可以从字典中检索到与其对应的值。下面的查询将返回狗狗的数量:
animal_counts['dogs']
这行代码的输出是 5。
如果你愿意,可以将这个值保存在一个新变量中,这样你就无需再次查询:
dogs = animal_counts['dogs']
现在,你直接输入变量 dogs,Python 将返回 5。
这就是你可以对字典做的一些基本操作。随着用代码去解决越来越复杂的问题,我们也会更深入地学习字典,正如字符串和列表一样。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论