《数据科学与分析:Python语言实现》 —2.2.5 列表

举报
华章计算机 发表于 2020/02/15 19:31:05 2020/02/15
【摘要】 本节书摘来自华章计算机《数据科学与分析:Python语言实现》 一书中第2章,第2.2.5节,作者是[英]赫苏斯·罗格尔–萨拉查(Jesús Rogel-Salazar),白 皓 刘江一 上官明乔 刁 娟 译。

2.2.5 列表

列表是一系列对象的集合,这些对象可以是相同类型也可以不是。我们用方括号“[]”表示一个列表。列表是可变对象,因此可以更改列表中的单个元素:

 image.png

可以使用与列表中的位置对应的索引来引用列表的元素:

 image.png

Python中的索引从零开始,因此数字列表的第一个元素称为数字[0]。此外,我们可以使用冒号表示引用列表的子序列,形如start:end,其中start是指我们想要包含在子序列中的第一个元素,end是我们要在其中使用的最后一个元素,从而形成一个切片。

请记住,Python将切片操作解释为不包括序列中的最后一项。在上面的示例中,Python从索引1读取到索引3,但不包括3。这就是为什么只返回numbers列表的第二个和第三个元素。

由于列表是可变对象,因此我们可以更改列表中的元素:

 image.png

我们还可以使用append方法将元素添加到列表中:

 image.png

新元素1.4142将添加到numbers列表的末尾,同时列表的长度增加1。

使用“+”运算符可以轻松实现列表的连接:

 image.png

请注意,如果两个列表都是数字,则使用“+”运算符的结果是列表元素的连接,而不是数字的总和。

列表的另一个有用方法是sort,它的用法完全符合我们的预期:允许我们对列表的值进行就地排序。这个方法还使我们能够在讨论元组时看到可变对象和不可变对象之间的区别(参见2.2.6节)。

让我们定义一个列表:

 image.png

现在可以调用sort方法,如下所示:

 image.png

正如我们所看到的,使用带有列表的sort会导致元素按升序排序。

这里有几点需要注意。首先,我们使用点(.)表示调用sort方法。在上面的代码中执行第一行时,解释器不返回任何值,这是一个好兆头,这意味着该方法可以正确执行。

为了看看发生了什么,我们发出了第二个命令,它允许我们打印List1的内容。如上所示,现在列表的元素已经正确排序。

我们需要注意的第二点是,由于列表是可变的,我们可以更改它们,在这种情况下,sort方法已将List1中的元素更改为升序。我们已将列表排序到位。无须创建列表副本并对其进行排序。

Python中的对象也具有与之关联的方法。列表也不例外,在这种特殊情况下也有一个排序函数。不同之处在于该函数将创建一个新对象。我们一起来看一看:

 image.png

到目前为止一切顺利,和期望的一样,我们最终同样得到一个排序列表。但是,让我们再看一下List1对象:

 image.png

如你所见,对象值居然没有改变!排序函数所做的是创建一个新对象并返回以升序排列的List1的内容。

我们可以将函数的结果分配给一个新变量,从而创建一个可以在稍后阶段引用的对象。

顺便提一下,如果你需要按降序排列元素,只需要将reverse作为参数传递给方法:

 image.png

或者使用函数:

 image.png

一个非常有用的Python风格的方法是列表推导式:构建列表而不需要写出完整循环流程。典型的用法是创建列表,其元素是应用于另一个序列或可迭代的每个成员的一些操作的结果。例如,让我们首先创建一个包含句子的字符串:

 image.png

我们可以使用上面的字符串创建一个列表,其中包含句子中的每个单词的大写和小写字母,以及确定单词的长度。我们可以在一行代码中完成这些工作:

image.png

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。