秋已凉 发表于 2021-3-29 17:04:43

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

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

劉鐡城 发表于 2021-4-7 08:53:42

>>> ls=
>>> ls

>>> for e in ls.copy():
...   print(e)
...   if e%3==0:
...             ls.remove(e)
...
0
1
2
3
4
5
6
7
8
9
>>> ls

天马巡天传奇 发表于 2021-4-18 09:33:06

1. 你不能删除所有与del一次?
2. 与您编写的循环代码一样,您应该能够直接使用del diner并删除它,而无需进行循环处理。
3、del a,删除列表中的第二个元素。
a.删除('bbb '),删除列表中的'bbb '选项。
前者使用序列号删除数据,后者使用内容删除数据。

伐木者 发表于 2021-4-20 14:21:28

#   测试for循环里面直接删除序列
f=['a','d','e']
tip = 1
for x in f:
    del f
    print(str(tip)+"次删除")
    print(x)
    print(f)
    tip=tip+1

print(tip)
print(f)
"""
    输出结果:
1次删除
a
['d', 'e']
2次删除
e
['e']
3
['e']

上头的黑兰州 发表于 2021-5-5 18:47:22

你应该看一看Python知识,不是所有的问题,这是不适合学习的
页: [1]
查看完整版本: 新手问一个关于迭代器和for in循环的问题