怎么避免在遍历列表的同时又修改该列的表

  介绍

今天就跟大家聊聊有关怎么避免在遍历列表的同时又修改该列的表,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强>在遍历列表的同时又在修改这个列表

下面这个例子中的代码应该比较明显了:

在祝辞祝辞,odd =, lambda  x :,布尔值(% x  2)   在祝辞祝辞,numbers =, (n  for  n 拷贝范围(10))   在祝辞祝辞,for 小姐:拷贝范围(len(数字):   …,,,,,if 奇怪的(数字[我]):   …,,,,,,,,,del 数字(我),,   #,这不对的:在遍历列表时删掉列表的元素。   …   Traceback  (most  recent  call 最后一个):   ,,,,,File “& lt; stdin>“, line  2,拷贝& lt; module>   IndexError: list  index  out  of 范围

遍历一个列表或者数组的同时又删除里面的元素,对任何有经验的软件开发人员来说这是个很明显的错误。但是像上面的例子那样明显的错误,即使有经验的程序员也可能不经意间在更加复杂的程序中不小心犯的错。

所幸,Python集成了一些优雅的编程范式,如果使用得当,可以写出相当简化和精简的代码。一个附加的好处是更简单的代码更不容易遇到这种”不小心在遍历列表时删掉列表元素”的错误。例如列表推导式(列表理解)就提供了这样的范式。再者,列表推导式在避免这样的问题上特别有用,接下来这个对上面的代码的重新实现就相当完美:

在祝辞祝辞,odd =, lambda  x :,布尔值(% x  2)   在祝辞祝辞,numbers =, (n  for  n 拷贝范围(10))   在祝辞祝辞,数字[:],=,(n  for  n 拷贝numbers  if  not 奇怪的(n)),,   #,啊,这多优美   在祝辞祝辞数字   [0,2,4,6,8]

看完上述内容,你们对怎么避免在遍历列表的同时又修改该列表有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

怎么避免在遍历列表的同时又修改该列的表