【发布时间】:2021-10-08 03:31:23
【问题描述】:
他们要我浏览一个列表并删除所有偶数实例。我应该一直删除偶数,直到达到一个奇数。
当我使用参数 4,8 和 10 调用我的函数时,我的函数将返回 10。我不知道为什么,我的 if 语句不应该解决这个问题吗?
def delete_starting_evens(lst):
for number in lst:
if number%2==0 and len(lst)>0:
lst.pop(0)
else:
break
return lst
print(delete_starting_evens([4, 8, 10, 11, 12, 15]))
print(delete_starting_evens([4, 8, 10]))
【问题讨论】:
-
请注意,
.pop方法具有 O(n²) 性能,但它可以在 O(n) 内完成,每次找到要删除的内容时使用重复的切片分配(但更常见的是,人们通过简单地复制而不是就地执行来实现 O(n)。如果您想表现得像就地一样,则可以对原始对象执行完整的切片分配)
标签: python-3.x for-loop