鱼C论坛

 找回密码
 立即注册
查看: 2254|回复: 11

[已解决]python删除列表中的偶数

[复制链接]
发表于 2022-5-20 14:42:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
a=[1,2,4,4,10,6,7,5,20]

for i in a:

    if i%2==0:
        a.remove(i)
print(a)

为什么删除不干净偶数呢?
大佬们帮帮忙。
最佳答案
2022-5-20 17:29:04
2022@lif 发表于 2022-5-20 17:23
能稍微解释一下吗,为什么这样子空间复杂度是为O(1)呢?这不应该还是O(n)嘛,我不太懂。




这里没有进行拷贝列表(拷贝列表就需要重新复制一便所有元素,即 n 个元素)

只命名了 1 个变量,没有进行递归堆栈,空间复杂度自然为 O(1) 常数级

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-5-20 16:24:25 | 显示全部楼层
Twilight6 发表于 2022-5-20 14:45
你在删除原列表,会导致所有后续元素索引 - 1

导致有些元素并没有被遍历到。你可以用 [:] 拷贝一份列 ...

那现在代码的时间复杂性和空间复杂性都是O(n)吧,那怎么实现时间复杂性为O(n),空间复杂性为O(1)呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-20 17:23:42 | 显示全部楼层

能稍微解释一下吗,为什么这样子空间复杂度是为O(1)呢?这不应该还是O(n)嘛,我不太懂。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-20 23:30:43 | 显示全部楼层
Twilight6 发表于 2022-5-20 17:29
这里没有进行拷贝列表(拷贝列表就需要重新复制一便所有元素,即 n 个元素)

只命名了 1 个变量 ...

谢谢大佬解疑。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-2 02:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表