我有一个列表,我们称它为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
Run Code Online (Sandbox Code Playgroud)
但是,这将删除我尝试删除的项目的所有实例,而实际上我只想删除该特定项目的第一个实例。有没有人对如何做到这一点有一些提示?
您只需要注意,删除代码的部分就不会运行两次。
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)
Run Code Online (Sandbox Code Playgroud)
它与以下内容完全相同:
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]
Run Code Online (Sandbox Code Playgroud)
以及这个
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]
Run Code Online (Sandbox Code Playgroud)
所用方法概述: