如何在Python3中使用列表方法

来自菜鸟教程
跳转至:导航、​搜索

介绍

Python 3 有许多内置的数据结构,包括列表。 数据结构为我们提供了一种组织和存储数据的方法,我们可以使用内置方法来检索或操作该数据。

要充分利用本教程,您应该熟悉列表数据类型、它的语法以及它的索引方式。 您可以通过阅读教程 Understanding Lists in Python 3 来查看列表。

在这里,我们将介绍可用于处理列表的内置方法。 我们将在列表中添加和删除项目、扩展列表、反向和排序列表等。

重要的是要记住,列表是可变的——或可变的——数据类型。 与不可变的 strings 不同,每当您在列表上使用方法时,您将影响列表本身,而不是列表的副本。

在本教程中,我们将主要使用一个列表,该列表包含各种鱼类的清单,当鱼被添加到市政水族馆或从市政水族馆中移除时,我们需要对其进行修改。

先决条件

您应该在您的计算机或服务器上安装 Python 3 并设置编程环境。 如果您没有设置编程环境,您可以参考本地编程环境或服务器上的编程环境适合您的操作的安装和设置指南系统(Ubuntu、CentOS、Debian 等)

list.append()

方法 list.append(x) 将在列表末尾添加一个项目 (x)。 我们将从分散在整个水族馆中的鱼的列表开始。 <$>[信息] 信息: 要按照本教程中的示例代码进行操作,请通过运行以下命令在本地系统上打开 Python 交互式 shellpython3 命令。 然后,您可以通过在 >>> 提示符后添加示例来复制、粘贴或编辑示例。 <$>

fish = ['barracuda','cod','devil ray','eel']

该列表由 4 个字符串项组成,它们的索引编号范围从 0 处的 'barracuda' 到索引 3 处的 'eel'

我们今天刚在水族馆里养了一条新鱼,我们想把这条鱼添加到我们的列表中。 我们会将新鱼类型的字符串 'flounder' 传递给 list.append() 方法,然后打印出我们修改后的列表以确认添加了该项目。

fish.append('flounder')
print(fish)
Output['barracuda', 'cod', 'devil ray', 'eel', 'flounder']

现在,我们有一个包含 5 个字符串项的列表,它们以我们传递给 .append() 函数的项结尾。

列表.插入()

list.insert(i,x) 方法有两个参数,其中 i 是您想要添加项目的索引位置,而 x 是项目本身。

我们的水族馆获得了另一种新鱼,鳀鱼。 您可能已经注意到,到目前为止,列表 fish 是按字母顺序排列的。 正因为如此,我们不想只使用 list.append() 函数将字符串 'anchovy' 添加到 fish 的末尾。 相反,我们将使用 list.insert()'anchovy' 添加到此列表开头的索引位置 0

fish.insert(0,'anchovy')
print(fish)
Output['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder']

在这种情况下,我们将字符串项添加到列表的前面。 每个连续的项目现在都将处于一个新的索引号,因为它们都已向下移动。 因此,'barracuda' 将位于索引 1,'cod' 将位于索引 2,而 'flounder'(最后一项)将位于索引 5。

如果此时我们将雀鲷带入水族馆,并且我们希望根据上面的列表保持字母顺序,我们会将项目放在索引 3fish.insert(3,'damselfish') 处。

list.extend()

如果我们想组合多个列表,我们可以使用 list.extend(L) 方法,它接受第二个列表作为参数。

我们的水族馆正在欢迎来自另一个即将关闭的水族馆的四条新鱼。 我们将这些鱼放在列表 more_fish 中:

more_fish = ['goby','herring','ide','kissing gourami']

我们现在将列表 more_fish 中的项目添加到列表 fish 并打印列表以确保合并第二个列表:

fish.extend(more_fish)
print(fish)
Output['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder', 'goby', 'herring', 'ide', 'kissing gourami']

此时,列表 fish 由 10 项组成。

list.remove()

当我们需要从列表中删除一个项目时,我们将使用 list.remove(x) 方法删除列表中值等于 x 的第一个项目。

一群当地研究科学家前来参观水族馆。 他们正在研究接吻的古拉米鱼种。 他们要求我们将接吻古拉米借给他们,因此我们想从列表中删除 'kissing gourami' 项目以反映此更改:

fish.remove('kissing gourami')
print(fish)
Output['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder', 'goby', 'herring', 'ide']

在使用 list.remove() 方法之后,我们的列表不再有 'kissing gourami' 项。

如果您在 list.remove() 中为 x 传入列表中不存在的项目,您将收到以下错误:

OutputValueError: list.remove(x): x not in list

请记住,list.remove() 只会删除您传递给它的项目的第一个实例,因此,如果我们的水族馆里有两个接吻 gouramis,我们只借给科学家一个,我们可以使用相同的构造fish.remove('kissing gourami') 我们的名单上还有第二个接吻古拉米。

列表.pop()

我们可以使用 list.pop([i]) 方法从列表中返回给定索引位置的项目,然后删除该项目。 用于索引的 i 周围的方括号告诉我们此参数是可选的,因此如果我们不指定索引(如 fish.pop() 中),则将返回并删除最后一项。

我们的魔鬼鱼对我们的水族馆来说太大了,谢天谢地,几个城镇的水族馆可以满足魔鬼鱼的需求。 我们将使用 .pop() 并指定字符串项 'devil ray' 的索引号 (3) 以从列表中删除该项目,并通过返回它来确认我们正在删除正确的项目。

print(fish.pop(3))
print(fish)
Outputdevil ray
['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']

通过使用 .pop() 方法,我们能够从列表 fish 中返回并删除 'devil ray'

如果我们不向该方法传递任何参数并执行 fish.pop(),则最后一项 'ide' 将被返回,然后从列表中删除。

列表索引()

当列表开始变长时,我们就很难计算出我们的项目以确定某个值位于哪个索引位置。 我们可以使用 list.index(x),其中 x 相当于一个项目的值,来返回该项目所在的列表中的索引。 如果有多个值为 x 的项目,此方法将返回第一个索引位置。

print(fish)
print(fish.index('herring'))
Output['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']
6

虽然列表 fish 不是很长,但我们仍然可以不加计数地确定项目 'herring' 的索引位置。 知道每个项目的索引非常重要,这样我们才能有效地操作列表。

如果我们用 .index() 指定一个值并且在给定的列表中不存在这样的值:ValueError: 'x' is not in list,我们将收到一个错误。

list.copy()

当我们正在处理一个列表并且可能希望以多种方式操作它同时仍然保持原始列表不变对我们可用时,我们可以使用 list.copy() 来制作列表的副本。

我们将fish.copy()返回的值传递给变量fish_2,然后打印出fish_2的值,确保它是一个与[ X165X]。

fish_2 = fish.copy()
print(fish_2)
Output['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']

此时,fishfish_2 都是等价的列表。

list.reverse()

我们可以使用 list.reverse() 方法来颠倒列表中项目的顺序。 也许我们使用反向字母顺序而不是传统的字母顺序更方便。 在这种情况下,我们需要将 .reverse() 方法与 fish 列表一起使用,以使列表反转到位。

fish.reverse()
print(fish)
Output['ide', 'herring', 'goby', 'flounder', 'eel', 'cod', 'barracuda', 'anchovy']

使用 .reverse() 方法后,我们的列表以项目 'ide' 开始,它位于列表的末尾,并以 'anchovy' 结束,它位于列表的开头列表。

list.count()

list.count(x) 方法将返回值 x 在指定列表中出现的次数。 当我们有一个包含很多匹配值的长列表时,我们可能希望使用此方法。 例如,如果我们有一个更大的水族馆,并且我们拥有的每一个霓虹灯 tetra 都有一个项目,我们可以使用 .count() 来确定我们在任何给定时间拥有的霓虹灯的总数。

我们将使用当前列表来计算项目 'goby' 出现的次数:

print(fish.count('goby'))
Output1

因为字符串 'goby' 只出现一次,所以当我们使用 .count() 方法时会返回数字 1。

让我们也将此方法与整数列表一起使用。 我们的水族馆致力于为每条鱼提供很好的照顾,因此我们会跟踪每条鱼的年龄,以便我们可以确保它们的饮食满足鱼的年龄需求。 第二个列表 fish_ages 对应于我们另一个列表 fish 中的鱼的类型。

因为 1 岁的鱼有特殊的饮食需求,我们将计算我们有多少 1 岁的鱼:

fish_ages = [1,2,4,3,2,1,1,2]
print(fish_ages.count(1))
Output3

整数 1 在列表 fish_ages 中出现了 3 次,所以当我们使用 .count() 方法时,返回的是数字 3。

list.sort()

我们可以使用 list.sort() 方法对列表中的项目进行排序。

就像 list.count()list.sort() 可以让我们更清楚地知道我们有多少特定的整数值,它还可以将未排序的数字列表按数字顺序排列。

让我们使用整数列表 fish_ages 来查看 .sort() 方法的实际作用:

fish_ages.sort()
print(fish_ages)
Output[1, 1, 1, 2, 2, 2, 3, 4]

通过将 .sort()fish_ages 一起使用,整数值按顺序返回。 实际上,由于这些年龄对应于特定的鱼,因此您可能希望在对原始列表进行排序之前对其进行复制。

list.clear()

当我们完成一个列表时,我们可以使用 list.clear() 方法删除其中包含的所有值。

当地政府决定接管我们的水族馆,将其作为我市人民享受的公共空间。 由于我们不再自己在水族箱上工作,我们不再需要保留鱼的库存,所以让我们清除 fish 列表:

fish.clear()
print(fish)
Output[]

fish 上使用 .clear() 函数后,我们收到方括号作为输出,让我们知道列表现在已清除所有项目。

结论

作为可变或可变的有序元素序列,列表是 Python 中非常灵活的数据结构。 列表方法使我们能够以复杂的方式处理列表。 我们可以将方法与 其他修改列表的方法 结合使用,以便拥有全方位的工具来在我们的程序中有效地使用列表。 从这里,您可以阅读有关 列表推导 以基于现有列表创建列表。