列表——嵌套
Python 核心数据类型的一个好功能是支持任意的嵌套 —— 能以任何组合嵌套它们,且要多深有多深。比如,可以有一个包含一个字典的列表,该字典包含另一个列表,以此类推。这个功能的一个直接应用是代表矩阵,或 Python 中的 “多维数组”。
具有嵌套列表的列表将完成基本应用程序的工作(在一些界面,但不是在 IDLE 中,将在下面的行 2 和行 3 上得到 “...” 延续行提示符):
>>> M = [[1, 2, 3], # 一个 3 x 3 的矩阵,作为嵌套列表
[4, 5, 6], # 如果被方括号包裹,代码可以跨行
[7, 8, 9]]
>>> M
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
这里已经编码了一个包含三个其他列表的列表。效果是代表了一个 3 x 3 的数字矩阵。这个结构可以用许多方式访问:
>>> M[1] # 获得行2
[4, 5, 6]
>>> M[1][2] # 获得行2行中的第3项
6
这里第一个操作获取了整个第二行,然后第二个操作从该行中抓取第三项(它从左向右运行,就像早前的字符串剥离和分割一样)。将索引操作连结起来让我们越来越深入到嵌套对象结构中 [13]。
[13]: 这个矩阵结构适用于小规模任务,但对更大规模的数字运算,你很可能想要使用 Python 的一个数字插件,如开源 NumPy 和 SciPy 系统。这些工具能比嵌套列表结构更有效地存储和处理大矩阵。NumPy 被宣称为相当于将 Python 转变为一个免费的和更强大版本的 Matlab 系统的等价物,并且如 NASA,Los Alamos,JPL 和许多其他组织使用这个工具来完成科学和财务任务。上网获取更多细节。