《数据科学与分析:Python语言实现》 —2.2.5 列表
2.2.5 列表
列表是一系列对象的集合,这些对象可以是相同类型也可以不是。我们用方括号“[]”表示一个列表。列表是可变对象,因此可以更改列表中的单个元素:
可以使用与列表中的位置对应的索引来引用列表的元素:
Python中的索引从零开始,因此数字列表的第一个元素称为数字[0]。此外,我们可以使用冒号表示引用列表的子序列,形如start:end,其中start是指我们想要包含在子序列中的第一个元素,end是我们要在其中使用的最后一个元素,从而形成一个切片。
请记住,Python将切片操作解释为不包括序列中的最后一项。在上面的示例中,Python从索引1读取到索引3,但不包括3。这就是为什么只返回numbers列表的第二个和第三个元素。
由于列表是可变对象,因此我们可以更改列表中的元素:
我们还可以使用append方法将元素添加到列表中:
新元素1.4142将添加到numbers列表的末尾,同时列表的长度增加1。
使用“+”运算符可以轻松实现列表的连接:
请注意,如果两个列表都是数字,则使用“+”运算符的结果是列表元素的连接,而不是数字的总和。
列表的另一个有用方法是sort,它的用法完全符合我们的预期:允许我们对列表的值进行就地排序。这个方法还使我们能够在讨论元组时看到可变对象和不可变对象之间的区别(参见2.2.6节)。
让我们定义一个列表:
现在可以调用sort方法,如下所示:
正如我们所看到的,使用带有列表的sort会导致元素按升序排序。
这里有几点需要注意。首先,我们使用点(.)表示调用sort方法。在上面的代码中执行第一行时,解释器不返回任何值,这是一个好兆头,这意味着该方法可以正确执行。
为了看看发生了什么,我们发出了第二个命令,它允许我们打印List1的内容。如上所示,现在列表的元素已经正确排序。
我们需要注意的第二点是,由于列表是可变的,我们可以更改它们,在这种情况下,sort方法已将List1中的元素更改为升序。我们已将列表排序到位。无须创建列表副本并对其进行排序。
Python中的对象也具有与之关联的方法。列表也不例外,在这种特殊情况下也有一个排序函数。不同之处在于该函数将创建一个新对象。我们一起来看一看:
到目前为止一切顺利,和期望的一样,我们最终同样得到一个排序列表。但是,让我们再看一下List1对象:
如你所见,对象值居然没有改变!排序函数所做的是创建一个新对象并返回以升序排列的List1的内容。
我们可以将函数的结果分配给一个新变量,从而创建一个可以在稍后阶段引用的对象。
顺便提一下,如果你需要按降序排列元素,只需要将reverse作为参数传递给方法:
或者使用函数:
一个非常有用的Python风格的方法是列表推导式:构建列表而不需要写出完整循环流程。典型的用法是创建列表,其元素是应用于另一个序列或可迭代的每个成员的一些操作的结果。例如,让我们首先创建一个包含句子的字符串:
我们可以使用上面的字符串创建一个列表,其中包含句子中的每个单词的大写和小写字母,以及确定单词的长度。我们可以在一行代码中完成这些工作:
- 点赞
- 收藏
- 关注作者
评论(0)