小白教程

 找回密码
 立即注册
查看: 8188|回复: 4

新手问一个关于迭代器和for in循环的问题

[复制链接]

2

主题

5

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2021-3-29 17:04:43 | 显示全部楼层 |阅读模式
最近,我刚学了python。问题1:书中有一个练习要求我从列表中删除三个元素。
当时,我觉得这种逐条删除的方法很愚蠢。我认为应该有一个更快更灵活的方法。所以我们播下了这个问题的种子。
当我知道如果,我发现我可以让代码自己判断,我想尽快删除它。但后来我发现if else elif是一个单一的判断,没有迭代就没有办法做到。
当谈到学习for in循环时,我认为这个难题应该被解决。但是我们发现,如果使用remove()和pop()来配合for in循环,就会造成迭代器的“错位”。所以我转身,试图使用Del声明问题2:在书中没有提到Del和remove()之间有任何区别。它应该叫做语句和函数
然后要意识到,这根本不是函数或语句的问题,而是指向for in的指针会因为删除元素而自动从元素中跳离,导致比预期的循环次数少一次。那么,有没有办法连续地从同一个列表中删除元素,直到列表中没有元素?

回复

使用道具 举报

0

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2021-4-7 08:53:42 | 显示全部楼层
  1. >>> ls=[i for i in range(10)]
  2. >>> ls
  3. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  4. >>> for e in ls.copy():
  5. ...     print(e)
  6. ...     if e%3==0:
  7. ...             ls.remove(e)
  8. ...
  9. 0
  10. 1
  11. 2
  12. 3
  13. 4
  14. 5
  15. 6
  16. 7
  17. 8
  18. 9
  19. >>> ls
  20. [1, 2, 4, 5, 7, 8]
复制代码
回复

使用道具 举报

0

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2021-4-18 09:33:06 | 显示全部楼层
1. 你不能删除所有与del一次?
2. 与您编写的循环代码一样,您应该能够直接使用del diner并删除它,而无需进行循环处理。
3、del a[1],删除列表中的第二个元素。
a.删除('bbb '),删除列表中的'bbb '选项。
前者使用序列号删除数据,后者使用内容删除数据。
回复

使用道具 举报

0

主题

7

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2021-4-20 14:21:28 | 显示全部楼层
  1. #   测试for循环里面直接删除序列
  2. f=['a','d','e']
  3. tip = 1
  4. for x in f:
  5.     del f[0]
  6.     print(str(tip)+"次删除")
  7.     print(x)
  8.     print(f)
  9.     tip=tip+1

  10. print(tip)
  11. print(f)
  12. """
  13.     输出结果:
  14. 1次删除
  15. a
  16. ['d', 'e']
  17. 2次删除
  18. e
  19. ['e']
  20. 3
  21. ['e']
复制代码
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-5-5 18:47:22 | 显示全部楼层
你应该看一看Python知识,不是所有的问题,这是不适合学习的
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-11-24 16:22 , Processed in 0.072954 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

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