如何在 Python 3 中使用列表方法

介绍

Python 3 有许多内置的数据结构,包括列表,数据结构为我们提供了组织和存储数据的方法,我们可以使用内置的方法来获取或操纵这些数据。

要充分利用本教程,你应该熟悉列表数据类型,其语法,以及它是如何索引的。

在这里,我们将浏览可用于与列表工作的内置方法,我们将添加和从列表中删除项目,扩展列表,反转和排序列表等。

重要的是要记住,列表是可变的 - 或可变的 - 数据类型. 与链接不同,它们是不可变的,当您在列表中使用方法时,会影响列表本身,而不是列表的副本。

对于本教程,我们将主要使用由各种鱼类的库存组成的列表,我们需要修改鱼类被添加到市政水族馆或从市政水族馆中删除。

前提条件

如果您没有设置编程环境,您可以参考本地编程环境的安装和安装指南(https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-python-3)或适用于您的操作系统(Ubuntu, CentOS, Debian 等)的编程环境(https://www.digitalocean.com/community/tutorial_collections/how-to-install-python-3-and-set-up-a-programming-environment)。

标签(附件)

方法 list.append(x)将添加一个项目(x)到列表的尽头. 我们将从我们在整个水族馆分散的鱼类的列表开始。 <$>[info] Info: 要跟随本教程中的示例代码,请在本地系统上运行python3命令,打开一个Python互动壳。

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

该列表由4个字符串项目组成,其索引数字从barracuda在0到eel在3。

我们今天刚刚进入了水族馆的新鱼,我们想将这条鱼添加到我们的列表中,我们将把我们新鱼类型的字符串,‘flounder’传入‘list.append()’方法,然后打印出我们的修改列表以确认该项被添加了。

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

现在,我们有一个5个字符串项目的列表,它以我们转移到 .append() 函数的项目结束。

标签: 插入( )

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

我们的水族馆收购了另一条新鱼,一个鱼,你可能已经注意到,到目前为止,名单是按字母顺序的,因此,我们不希望只在的末尾添加字符串list.append()函数。

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

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

如果,在这一点上,我们正在将一个女生鱼带到水族馆,我们希望根据上面的列表保持字母顺序,我们会把该物品放在索引 3: fish.insert(3,'damselfish')

扩展( )

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

我们的水族馆欢迎来自另一个即将关闭的水族馆的四条新鱼,我们将这些鱼列入名单中:

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

现在我们将从more_fish列表中添加到fish列表中的项目,然后打印列表,以确保第二个列表被集成:

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

此时此刻,列表由10个项目组成。

点击删除( )

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

一组当地的研究科学家来参观水族馆,他们正在研究鱼类的亲吻古拉米物种,他们要求我们借给他们我们的亲吻古拉米,所以我们希望从列表中删除亲吻古拉米项,以反映这种变化:

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

使用list.remove()方法后,我们的列表不再包含接吻gourami项目。

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

1[secondary_label Output]
2ValueError: list.remove(x): x not in list

请记住,‘list.remove()’只会删除你传递给它的项目的第一个实例,所以如果我们在我们的水族馆里有两个接吻的古拉米,而我们只借给了科学家,我们可以使用同样的构造‘fish.remove('接吻的古拉米')’,仍然有第二个接吻的古拉米在我们的名单上。

( )

我们可以使用‘list.pop([i])’方法将该项目返回给定的索引位置,然后从列表中删除该项目。围绕‘i’索引的方块告诉我们,这个参数是可选的,所以如果我们不指定索引(如在‘fish.pop()’中),最后一个项目将返回并删除。

我们的恶魔射线已经变得太大了我们的水族馆,幸运的是,几个城市的水族馆可以满足射线的需求,我们将使用 .pop() 并指定字符串项目 `'devil ray' 的索引号码,从我们的列表中删除该项目,并通过返回它,我们将确认我们正在删除正确的项目。

1print(fish.pop(3))
2print(fish)
1[secondary_label Output]
2devil ray
3['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']

通过使用.pop()方法,我们能够从列表中返回并删除恶魔射线

如果我们不将任何参数传递到这个方法,然后执行fish.pop(),最后一个项目ide将返回,然后从列表中删除。

标签: index( )

当列表开始变得更长时,我们很难计算我们的项目,以确定某个值位于哪个索引位置。我们可以使用list.index(x),其中x等同于一个项目值,以返回该项目所在的列表中的索引。

1print(fish)
2print(fish.index('herring'))
1[secondary_label Output]
2['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']
36

虽然列表不是很长,但我们仍然可以确定项目``的索引位置而不计数,每个项目的索引非常重要,以便我们能够有效地操纵列表。

我们会收到错误,如果我们指定一个值与 .index(),而没有这样的值在给定的列表中: `ValueError: 'x' 不在列表中。

标签(复印)

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

我们将从fish.copy()返回的值传输到fish_2变量,然后打印fish_2的值,以确保它是与fish相同的项目列表。

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

在此时,鱼_2都是等效列表。

反转( )

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

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

在使用.reverse()方法后,我们的列表以我们列表的末尾的ide开始,并以列表的开始的anchovy结束。

点评( )

list.count(x)方法将返回指定列表中的值x发生的次数。当我们有大量匹配值的长列表时,我们可能想要使用这种方法。

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

1print(fish.count('goby'))
1[secondary_label Output]
21

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

我们的水族馆致力于为每条鱼提供很好的照顾,所以我们正在跟踪我们每条鱼的年龄,以便我们可以确保他们的饮食根据他们的年龄满足鱼的需求。

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

1fish_ages = [1,2,4,3,2,1,1,2]
2print(fish_ages.count(1))
1[secondary_label Output]
23

整数 1 在列表 fish_ages 中发生 3 次,所以当我们使用 `.count() 方法时,返回数字 3。

种类( )

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

就像「list.count()」一樣,「list.sort()」可以讓我們更明顯地看到一個特定整數值的數量,它也可以將一個不排序的數目列入數字順序。

让我们使用整数列表, fish_ages 来看到 .sort() 方法在行动:

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

通过使用 .sort()fish_ages,整数值以顺序返回. 实际上,由于这些年龄对应于特定鱼类,您可能希望在排序前复制原始列表。

清洁( )

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

當地政府決定接管我們的水族館,使它成為我們城市的人們享受的公共空間. 因為我們不再自己在水族館工作,我們不再需要儲存魚類,所以讓我們清除列表:

1fish.clear()
2print(fish)
1[secondary_label Output]
2[]

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

结论

作为一个可变的或可变的元素序列,列表是Python中非常灵活的数据结构。列表方法使我们能够以复杂的方式与列表工作。我们可以将方法与 其他修改列表的方式相结合,以便在我们的程序中有效地使用列表的全套工具。

Published At
Categories with 技术
comments powered by Disqus