我有一个列表,我们称它为 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]
所用方法概述:
- del list[i] - del 语句也可用于从列表中删除切片
- list.pop - 删除并返回索引处的项目(默认最后一个)。如果列表为空或索引超出范围,则引发 IndexError。
- list.remove - 删除第一次出现的值。如果该值不存在,则引发 ValueError。
