博主现在刚刚入门Python,进行在完成书上作业的时候发现一个问题。作业要求是删除列表中的所有元素,而我在使用for语句时,发现一直删除不干净。
people = ['admin','yin','qi','zhang']if people: for person in people: people.remove(person)else: print("We need to find soeme users")print(people)结果:[‘yin’, ‘zhang’]
经过在网上进行查询之后发现,就恍然大悟。当进行第一个循环时,是可以正常删除掉’admin’的,但是这个时候’yin’会补上来成为该列表的第一个元素,而这个时候变量person就指向了’qi’,所以这个时候就会对’qi’进行删除的操作。
所以我们将代码改成如下:
people = ['admin','yin','qi','zhang']if people: for person in people[:]:# people.remove(person)else: print("We need to find soeme users")print(people)结果:[]
我们添加了"[:]"的操作,就是我们之前所学的切片,这个操作使得每一循环都是从列表的最开始的元素到最后一个元素的,因此就没有遗漏的问题了。
如果有解释错误或者你有更好的解释,欢迎在评论区评论。