AI速成课:从AI编程到构建智能软件
上QQ阅读APP看书,第一时间看更新

3.3 列表和数组

列表(list)和数组(array) 本书并没有明确区分Python中的列表和数组,对于本书而言,在概念上可以将它们视为等效的。——译者注可以用一个表来表示。想象一个一维(1D)的向量或矩阵。你刚刚想象的就是一个列表或数组。

列表和数组可以存储数据。数据可以是任何东西:变量、其他列表或数组(这种情况叫作多维列表或数组),或某些类的对象(我们之后会学到)。

比如,以下就是一个包含整数的一维列表或数组:

而以下是二维(2D)列表或数组,同样包含整数:

创建一个二维列表,就是创建一个包含了多个列表的列表。创建一个列表很容易,就像这样:

在这里我们创建了4个列表:L1、L2、L3、L4。前两个列表是空的,它们包含0个元素。接下来的两个列表包含了一些预设的值。L3是一个一维列表,就和第一张图片中的一样。L4是一个二维列表,就和第二张图片一样。如你所见,L4实际上是由3个更小的一维列表组成的。

本书中提到的数组通常是指NumPy数组。NumPy是Python的一个库(library)。库指允许你执行很多操作却又不需要从头写代码的提前写好的程序集。NumPy被广泛用于列表或数组的不同操作。你可以把NumPy数组看作一种特殊的列表,只不过功能更多罢了。

要想创建NumPy数组,你必须先设置数组的尺寸并且使用一个方法进行初始化。举个例子:

在第一行代码中,我们导入了NumPy库(如你所见,要导入一个库须要用到import关键词),然后通过用as关键词将NumPy简写为np,这样以后使用起来会更简便。接着,我们创建一个5×5的用0填充的新二维数组,命名为nparray。“.”后面的部分表示初始化方法。本例中,我们初始化这个零数组的方法是zeros函数。

为了获取列表或者数组中元素的值,你需要明确给出该元素在列表中对应位置的索引。例如,如果你想改变L3列表中的第一个元素,你就要先获得这个元素的索引。在Python中,索引从0开始,所以你应该写L3[0]。事实上,你还可以将print()与它结合,写成print(L3[0])。如果执行这行代码,那么如你所预期的,屏幕上会显示数字3。

获取一个多维列表或数组中的单个值需要你输入和维度一样多的索引值。例如,要从L4列表中获取0,我们就必须写L4[1][1]。L4[1]会返回第二行的全部内容,同时也是一个列表。

练习

尝试找出L4列表中全部数值的平均值。本练习有多个答案。

提示:最简单的解决方案是利用NumPy库。可以在以下链接查找NumPy库提供的一些函数——https://docs.scipy.org/doc/numpy/reference/

本练习的答案可以在GitHub页面的Chapter 03/Lists and Arrays/homework.py文件中找到。

[1] 本书并没有明确区分Python中的列表和数组,对于本书而言,在概念上可以将它们视为等效的。——译者注