如何使用Python从另一个列表中删除索引列表?
在本文中,我们将展示如何使用Python从原始列表中删除索引列表元素。现在我们看到了两种方法来完成这个任务——
- 使用pop()方法
-
使用del关键字
假设我们有一个包含一些元素的列表。我们将使用上面指定的不同方法从主列表中删除索引列表元素。
注意
我们必须按降序排列索引列表,因为从开头删除元素将改变其他元素的索引,删除另一个元素将导致索引错位,从而得到不正确的结果。
让我们用一个例子来说明这一点。
考虑以下列表-
list = ["Welcome," "to," "tutorialspoint," "python"]
indices List = [ 0, 2]
阅读更多:Python 教程
从头部删除元素的问题
如果我们从开头删除元素,则索引为0的元素“ 欢迎 ”将首先被删除。
现在修改后的列表如下所示-
list = ["to," "tutorialspoint," "python"]
如果我们删除2个索引位置即“python”的元素,修改后的列表看起来像这样
list = ["to," "tutorialspoint]
但结果应该是这样的
list = ["to”,"python"]
因为索引为0和2的元素是“Welcome”和“tutorialspoint”。
因此,为了克服这个问题,我们从末尾删除元素,这样索引就不会受到影响。
方法1:使用pop()函数
算法(步骤)
以下是执行所需任务的算法/步骤 –
- 创建一个变量以存储输入的列表
-
在要删除项目的索引列表中输入索引列表
-
使用sorted()函数(返回给定可迭代对象的排序列表。如果reverse=True,则按降序排序,如果reverse=False,则按升序排序。默认为False即升序),通过传递给定的索引列表和reverse=True作为参数将给定的索引列表按降序排列。
-
使用for循环遍历给定的索引列表。
-
使用if条件语句验证相应迭代器索引是否小于列表长度,并使用len()方法返回对象中的项数。
-
如果条件为真,请使用pop()函数删除相应索引处的项目。
-
删除给定索引处的项目后,请打印列表。
例子
以下程序使用pop()函数基于索引列表返回删除主/原列表元素后的列表 –
# 输入列表
inputList = ["Welcome", 20, "to", "tutorialspoint", 30, "python"]
# 输入要删除元素的索引列表
givenIndices = [1, 4, 5]
# 反转索引列表
indicesList = sorted(givenIndices, reverse=True)
# 遍历索引列表
for indx in indicesList:
# 检查相应的迭代器索引是否小于列表长度
if indx < len(inputList):
# 使用pop()函数按索引删除元素
inputList.pop(indx)
# 输出删除后的列表
print("在给定索引处删除元素后的列表:\n", inputList)
输出
执行上述程序,将生成以下输出 −
在给定索引处删除元素后的列表:
['Welcome', 'tutorialspoint']
我们创建了一个列表,并添加了一些随机值。然后,我们创建另一个索引列表,以存储要删除的主列表元素的索引。为避免删除冲突,我们将索引列表按降序/递减顺序排序。之后,我们遍历索引列表,检查每个元素的索引是否小于主列表的长度,因为我们只能删除索引小于列表长度的元素。然后,通过传递索引,我们从主列表中删除该元素,并显示删除主列表索引列表索引元素后的最终主列表。
方法2:使用del()函数
算法(步骤)
要执行所需任务,必须遵循以下算法/步骤 −
- 使用 sorted() 函数将给定的索引列表按降序排序,通过向其传递给定的索引列表和 reverse=True 作为参数。
-
使用 for 循环遍历所给索引列表。
-
使用 if 条件语句来检查迭代器索引是否小于列表长度,使用 len() 函数(len()方法返回对象中的项数)
-
使用 del 关键字按给定的索引(iterator)删除列表项。
-
输出删除后的索引列表所有元素的列表。
语法
del 列表对象 [索引]
它是一种用于基于其索引位置从列表中删除项目的命令。
如果列表为空或指定的索引超出范围,del关键字将引发IndexError。
示例
下面的程序使用del关键字返回删除主/原始列表元素的索引列表元素后的列表 −
inputList = ["欢迎", 20, "到", "教程点", 30, "Python"]
# 索引列表
givenIndices = [0, 3]
# 反转索引列表
indicesList = sorted(givenIndices, reverse=True)
# 遍历索引列表
for indx in indicesList:
# 检查相应迭代器索引是否小于列表长度
if indx < len(inputList):
# 使用 del 关键字按索引删除元素
del inputList[indx]
# 打印删除给定索引的项目后的列表
print("删除给定索引后的列表:\n")
print(inputList)
输出
删除给定索引后的列表:
[20, 'to', 30, 'Python']
结论
在本文中,我们学习了如何使用 pop() 函数和 del 关键字从原始列表中删除索引列表。使用一个实际的例子,我们也学习了为什么不能从开始删除元素。