for循环删除元素遗漏
如:array=[“aaa”,“acc”,“baa”,“bbb”,“bcc”]
for each in array:
if “b” in each:
array.remove(each)
这样的话“bbb”不会被删除,个人认为列表元素变动而for继续递增 所以漏一个,但除了再次for外,不知如何处理,请老师们帮忙解惑
你的理解是对的哈,那我们列表切片等价浅拷贝一次就不影响了
array=["aaa","acc","baa","bbb","bcc"]
for each in array[:]:
if "b" in each:
array.remove(each) 好的,谢谢。
不过我一直不明白array和array[:]的区别 348625228 发表于 2020-6-29 20:20
好的,谢谢。
不过我一直不明白array和array[:]的区别
array[:]可以等价于array.copy()
重新拷贝了一份就不是在原列表上进行遍历 Twilight6 发表于 2020-6-29 20:22
array[:]可以等价于array.copy()
重新拷贝了一份就不是在原列表上进行遍历
那就是说for又重新重头开始了? 348625228 发表于 2020-6-29 21:11
那就是说for又重新重头开始了?
不是for 循环按照原列表顺序来的,列表内元素的移除不影响拷贝后的 意思是说for操作的是提前准备好的静态的列表,而不再是remove操作后动态的了? 相当于借助一个列表去操作另外一个列表。
十分感谢!
页:
[1]