第十四章 元组、集合和字典
整章内容:
- [x] 创建元组。
- [x] 使用元组作为固定列表来防止添加、删除或替换元素。
- [x] 将常见的序列运算应用于元组。
- [x] 创建集合。
- [x] 使用
add
和remove
方法对集合进行元素的添加和删除。 - [x] 使用
len
、min
、max
和sum
函数对集合进行操作。 - [x] 使用
in
和not in
运算符判断一个元素是否在一个集合中。 - [x] 使用
for
循环遍历集合中的元素。 - [x] 使用
issubset
或issuperset
方法检测一个集合是否是另一个集合的子集或父集。 - [x] 使用
==
运算符检测两个集合是否具有相同的内容。 - [x] 使用运算符
|
、&
、-
和^
实现集合求并、交、差、和对称差。 - [x] 比较集合和列表的性能区别。
- [x] 使用集合开发一个统计Python源文件中关键字个数的程序。
- [x] 创建字典。
- [x] 使用语法
dictionaryName[key]
对字典添加、修改和获取元素。 - [x] 使用
del
关键字删除字典中的条目。 - [x] 使用
for
循环遍历字典中的关键字。 - [x] 使用
len
函数获取字典的大小。 - [x] 使用
in
或not in
运算符检测一个关键字是否在字典中。 - [x] 使用
==
运算符检测两个字典是否有相同的内容。 - [x] 在字典上使用
keys
、values
、items
、clean
、get
、pop
和popitem
方法。 - [x] 使用字典开发应用程序。
新内容:
-
元组中的元素是固定的,一旦一个元组被创建,就无法对元组中的元素进行添加、删除、替换或重新排序。
t1 = () t2 = (1, 2, 3) t3 = tuple([2 * x for x in range(1, 5)]) t4 = tuple("abac")
-
集合中的元素不重复且不是按任何特定顺序放置的。
s1 = set() s2 = {1, 3, 5} s3 = set((1, 3, 5)) s4 = set([x * 2 for x in range(1, 10)])
-
add(e)
:对集合添加元素。remove(e)
:对集合删除元素。若e
不存在,则抛出一个KeyError
异常。 -
字典是一个存储键值对集合的容器对象,通过使用关键字实现快速获取、删除和更新值。
students = {"111" : "one", "222" : "two"} students["333"] = "three" del students["333"]
其他内容:
-
一个元组包含了一个固定的元素列表,但元组里的个体元素可能是易变的。如下所示,尽管不能添加、删除或替换元组中的圆对象,但可以改变一个圆的半径,因为一个圆对象是可变的。如果一个元组包含不可变的对象,那么这个元组被称为不可变的,如数字元组或字符串元组。
from CircleFromGeometricObject import Circle circles = (Circle(2), Circle(4), Circle(7)) circles[0].setRadius(30) circles[0].getRadius()
-
Python使用花括号创建集合和字典,语法
{}
被用来表示一个空字典,为了创建一个空集合,使用set()
。 -
不能使用比较运算符对字典进行比较,因为字典中的条目是没有顺序的。
第十五章 递归
整章内容:
- [x] 解释什么是递归函数并描述使用递归的好处。
- [x] 为递归数学函数开发递归程序。
- [x] 解释在调用栈中如何处理递归函数的调用。
- [x] 使用递归解决问题。
- [x] 使用辅助函数设计一个递归函数。
- [x] 使用递归实现选择排序。
- [x] 使用递归实现二分查找。
- [x] 使用递归获取一个目录的大小。
- [x] 使用递归解决汉诺塔问题。
- [x] 使用递归绘制分形。
- [x] 使用递归解决八皇后问题。
- [x] 了解递归和迭代之间的关联与区别。
- [x] 了解尾递归函数并解释为什么需要它。
新内容:
-
os模块中的几个函数:
-
os.path.isfile(filename)
:判断是不是一个文件名。 -
os.path.getsize(filename)
:返回文件的大小。 -
os.listdir(directory)
:返回一个子目录列表以及目录下的文件。
-
其他内容:
- 如果从递归调用返回时没有待处理的操作要完成,那么这个递归的函数就称为尾递归,尾递归是高效的。