首页 > 解决方案 > for 循环不会遍历所有数据?

问题描述

data = [1, 2, 3, 4, 5]
for x in data:
        print(x)
        if data.count(x) < 2:
                data.remove(x)

大家好,

所以我目前正在通过 py.checkio.org 工作,并且我必须删除列表中所有唯一的数字。

当我在没有 if 语句的情况下运行我的代码时,我得到一个从 1 到 5 的输出计数。但是,一旦我使用 if 语句运行 for 循环,for 循环只运行每秒数的数据,我的输出是 1 3 5。谁能告诉我这里发生了什么?

标签: python-3.x

解决方案


虽然来自@Stef 和@0x5453 都与您的问题有关。@ConnorTJ 的评论显然是错误的。remove 函数不会删除索引处的项目,而是删除第一次出现的项目。

要回答您的问题,关于这里发生了什么,让[s 检查您的代码:第一次通过 x 的值是 1 您打印 x 的值然后测试以查看 x 的出现次数是否小于 2由于答案是肯定的,您继续从列表中删除该项目。

第二次遍历列表,For 循环获取列表中的下一个值(在索引 1 处),现在是值 3 你打印值 3 你检查 3 的计数是否小于 2 因为计数是少你从列表中删除该项目。

这个过程比继续


推荐阅读