大家好。这儿存在一个问题。两个值被传递给函数,一个列表和一个数字。必须删除列表的所有元素,直到列表的编号恰好是作为第二个参数传递给函数的编号
def remove_all_before(items: list, border: int) :
# your code here
index = 0
for i in items:
if i == border:
break
else:
print(f"Удаляем {i}")
input(" ")
del items[index]
index = index + 1
return items
print(list(remove_all_before([1, 2, 3, 4, 5], 3)))
我写了这个函数,但由于某种原因它没有删除第二个元素并返回结果
[2, 3, 4, 5]
并且应该
[3, 4, 5]
我建议不要重新发明轮子,而是使用标准库的功能:
至于为什么您的代码不起作用 - 在循环内,您永远不应该删除循环所经过的序列的元素。删除时,所有后续元素都移动,循环跳过一个元素。此外,由于这个偏移量,您的索引将不再指向您期望的元素。
这是不使用第三方模块的代码,并且检查了越界列表 是
len(items) - border该列表将被剪切并返回的索引,作为函数 robots 的结果,if len(items) <= border:print(list(remove_all_before([1, 2, 3, 4, 5], 3)))