您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python:在遍历列表时删除列表元素

Python:在遍历列表时删除列表元素

你始终可以遍历列表的副本,从而可以自由修改原始列表:

for item in list(somelist):
  ...
  somelist.remove(item)

为了满足这些条件:修改原位最初的名单,没有列表的副本,只有一通,工程,传统的解决方案是迭代向后:

for i in xrange(len(somelist) - 1, -1, -1):
    element = somelist[i]
    do_action(element)
    if check(element):
        del somelist[i]

奖励:并非len(somelist)在每次迭代中都执行。适用于任何版本的Python(至少可追溯到1.5.2)... s / xrange / range / for3.X

更新:如果要迭代转发,则可能会更加棘手和丑陋:

i = 0
n = len(somelist)
while i < n:
    element = somelist[i]
    do_action(element)
    if check(element):
        del somelist[i]
        n = n - 1
    else:
        i = i + 1
python 2022/1/1 18:21:16 有391人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶