Skip to main content
 首页 » 编程设计

python之如何在不使用 .pop() 或 .remove() 的情况下从项目列表中删除第一次出现的特定项目

2025年05月04日9落叶

我有一个列表,我们称它为 l = [1,2,3,7,8,9,10,7]。鉴于此列表 l,我试图在不使用 .pop() 或 .remove() 内置函数的情况下删除第一次出现的数字 7。

我试过了

def remove_item(l, item_to_remove): 
  newlst = [] 
  for item in l: 
      if item != item_to_remove: 
        newlst.append(item) 
  return newlst 

但是,这会删除我要删除的项目的所有实例,而实际上我只想删除该特定项目的第一个实例。有没有人有关于如何完成此操作的一些提示??

请您参考如下方法:

您只需要注意代码的删除部分不会运行两次。

lst = [1,2,3,7,8,9,10,7]  # [1, 2, 3, 7, 8, 9, 10, 7] 
print(lst) 
for i in range(len(lst)): 
    if lst[i] == 7: 
        del lst[i]  # [1, 2, 3, 8, 9, 10, 7] 
        break 
print(lst) 

它和下面的完全一样:

lst = [1,2,3,7,8,9,10,7] 
print(lst)  # [1, 2, 3, 7, 8, 9, 10, 7] 
for i in range(len(lst)): 
    if lst[i] == 7: 
        lst.pop(i) 
        break 
print(lst)  # [1, 2, 3, 8, 9, 10, 7] 

还有这个

lst = [1,2,3,7,8,9,10,7] 
print(lst)  # [1, 2, 3, 7, 8, 9, 10, 7] 
for i in range(len(lst)): 
    if lst[i] == 7: 
        lst.remove(lst[i]) 
        break 
print(lst)  # [1, 2, 3, 8, 9, 10, 7] 

所用方法概述:

  1. del list[i] - del 语句也可用于从列表中删除切片
  2. list.pop - 删除并返回索引处的项目(默认最后一个)。如果列表为空或索引超出范围,则引发 IndexError。
  3. list.remove - 删除第一次出现的值。如果该值不存在,则引发 ValueError。