首页 > 代码库 > Python倒序遍历
Python倒序遍历
出现这个情况是因为,pop一次后list长度发生变化,第二次pop的是新的list了,
可以按从小到大的顺序删除,每删除一个,后面要删除的index都减去1: 第一次pop(1), 第二次pop(3-1)....
这里直接给出通用解决方案:1、倒序循环遍历;2、遍历拷贝的list,操作原始的list。
倒序循环遍历三种方法:http://blog.csdn.net/iflysoft/article/details/9013315
实现1:
source = [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘] # 要删除这个list中index为2,4,6的元素,结果应该为a b d f h del_list = [4,6,2] # 将被删除的index编号,假设是无序的 for index in range(len(source)-1,-1,-1): # 循环顺序7 6 5 4 3 2 1 0 for del_index in del_list: if index == del_index: source.pop(index) # 这样倒序遍历每次都删除了del_list里面index最大的,即source中最靠近尾部的元素 # 可以看出,实际上是这样的删除步骤, pop(6) pop(4) pop(2)也可以这样: del_list.sort(reverse=True) # del_list降序排列 for i in del_list: source.pop(i) print(source) # 以上两种方法任选一种
实现2:
只是倒序遍历方式不一样,用的是列表切片的方式,(字符串也可以切片)
source = [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘] for i in source[::-1]: # list切片,这是创建了一个新list,可能占用内存 print(i) # h g f e d c b a for i in reversed(source): # 反转list,也创建了一个新list print(i) # h g f e d c b a
Python倒序遍历
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。