python 中是否有更好的(更明显/惯用的)方法来编写等效的
index = 0
while index < len(some_list):
do_some_stuff(some_list[index]) # may have many side effects
if delete_element(some_list[index]):
del some_list[index]
else:
index += 1
或者字典中与此等效的字典?字典/列表理解不是一件事,因为结果delete_element
可能取决于do_some_stuff
.
您可以将操作分解为两个单独的循环,并为第二部分使用列表理解。
for value in some_list:
do_some_stuff(value)
some_list = [value for value in some_list if not delete_element(value)]
另一个解决方案是迭代列表的副本,然后使用enumerate
无需手动维护计数器即可跟踪指数。
for index, value in enumerate(some_list[::-1]):
do_some_stuff(value)
if delete_element(value):
del some_list[-index - 1]
你想要向后迭代,这样你就不必调整index
对于被删除的元素。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)