首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中删除列表中的偶数?

如何在Python中删除列表中的偶数?
EN

Stack Overflow用户
提问于 2019-07-23 17:39:57
回答 5查看 2.8K关注 0票数 2

我正试着从列表中删除偶数。我的最终输出是4,8,但它应该是空的。

代码语言:javascript
运行
复制
list = [2, 4, 6, 8, 10]
for i in list:
    divid = i %2
    if divid == 0 :
        list.remove(i)
print(list)
EN

回答 5

Stack Overflow用户

发布于 2019-07-23 17:47:17

当你在列表上迭代时,你正在修改它。想象一个指针沿着列表移动。对于第一次迭代,索引为0( i为2)。删除第一个值并返回到循环的开头。

索引递增(到1),i现在是列表中的第二个值(现在是6),该值也被删除。请注意,4现在位于迭代器的索引“后面”,并且永远不会到达。继续沿着列表前进,您将每隔一段时间从[4, 8]中删除一次值。

我有几点建议。要遍历这样的列表,可以使用for i in list[:]:,它会在迭代之前复制列表。也要避免命名变量,比如list,这会覆盖内置类型。您将在稍后的代码中导致错误。

票数 3
EN

Stack Overflow用户

发布于 2019-07-23 17:50:46

正如其他人所指出的那样,您不应该在修改列表的同时对其进行迭代。最简单的解决方案是创建一个包含所需修改的新列表:

代码语言:javascript
运行
复制
lst = [2, 4, 6, 8, 10]
new_lst = [i for i in lst if i % 2 != 0]

上面使用列表理解来创建一个只包含奇数元素的新列表-这与从原始列表中删除偶数元素相同。

票数 1
EN

Stack Overflow用户

发布于 2019-07-23 17:55:14

代码语言:javascript
运行
复制
for i in lst:
    if i % 2 != 0:
        new_lst.append(i)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57161182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档