gpt4 book ai didi

python - 使用 del 函数从列表中删除偶数

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:25 25 4
gpt4 key购买 nike

我不允许使用 .remove() 函数删除列表中的偶数,规范说:你将修改原始列表,所以它的 id() 不能改变。这就是我所拥有的:

def remove_evens(xs):
for i in range(len(xs)):
for x in xs:
if x%2==0:
del xs[i]
return xs

例如,如果我测试函数并输入 xs=[1,2,3,4,5],它会返回 [3,5]。我不知道为什么 1 不返回

最佳答案

那是因为您正在遍历列表并同时修改它。这意味着索引 i 并不总是正确的,因为您刚刚从列表中删除了一个元素。这会导致跳过元素,这就是 1 不在其中的原因。

你可以这样做:

def remove_evens(xs):
return [x for x in xs if x % 2 != 0]

这使用了 list comprehension创建一个没有偶数的列表。如果您需要修改现有列表,您可以执行以下操作:

def remove_evens(xs):
to_remove = []
for i, x in enumerate(xs):
if x % 2 == 0:
to_remove.append(i)
for j in to_remove:
del xs[j]
return xs

这将创建一个 to_remove 列表,用于跟踪需要删除的元素的位置。

关于python - 使用 del 函数从列表中删除偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com