python-3.x - 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。谁能告诉我这里发生了什么?
解决方案
虽然来自@Stef 和@0x5453 都与您的问题有关。@ConnorTJ 的评论显然是错误的。remove 函数不会删除索引处的项目,而是删除第一次出现的项目。
要回答您的问题,关于这里发生了什么,让[s 检查您的代码:第一次通过 x 的值是 1 您打印 x 的值然后测试以查看 x 的出现次数是否小于 2由于答案是肯定的,您继续从列表中删除该项目。
第二次遍历列表,For 循环获取列表中的下一个值(在索引 1 处),现在是值 3 你打印值 3 你检查 3 的计数是否小于 2 因为计数是少你从列表中删除该项目。
这个过程比继续
推荐阅读
- java - 无法使用 Spring Data JPA 创建 JOIN
- html - 将除第一个孩子之外的所有文本右对齐
- django - 无法使用 upload_to 动态创建路径
- typescript - 如何根据通用类型“T”初始化 TypeORM 存储库?
- typescript - 尝试扩充界面时,历史没有定义功能
- mongodb - MongoDB - 索引前缀如何工作?
- scrapy - 需要将 Scrapy 回调方法数据返回给调用函数
- javascript - 如何将 hexlified 二进制数据转换为 unicode 字符串
- javascript - 使用过滤器过滤数据表中的特定月份
- intellij-idea - Scalatest 在 Intellij 中与 Scala 2.13.0 一起工作需要什么?