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
时间: 2024-08-25 03:01:54

Python倒序遍历的相关文章

Python文件遍历二种方法

分享下有关Python文件遍历的两种方法,使用的OS模块的os.walk和os.listdir实现. 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历.方法一:利用os.walkos.walk可以自顶向下或者自底向上遍历整个文件树,然后返回一个含有3个元素的tuple,(dirpath, dirnames, filenames).注意,os.walk()会返回一个generater,所以调用的时候一定要放到for循环中

Python递归遍历目录下所有文件

#自定义函数: import ospath="D:\\Temp_del\\a" def gci (path): parents = os.listdir(path) for parent in parents: child = os.path.join(path,parent) #print(child) if os.path.isdir(child): gci(child) # print(child) else: print(child) gci(path) #使用os.walk方

python list遍历时删除元素

python list遍历时候删除还真需要注意下,今天帮同学处理数据,竟然傻逼了. 需求: 除了第一列,给每列加一个序号如:"1:0","2:0","3:20100307",然后删除冒号后为0的数据. 推荐做法: arrays = [ ['5001', '0', '0', '20100307', '20150109', '2', '3', '75', '0', '0', '114', '13', '2', '0', '0'], ['10001',

python list遍历

python list遍历 是对列表进行的经常性的操作.比如我们需要遍历一个列表: info = ['a','b','c','d','ee','fff'] for m in range(len(info)): print info[m] 有些朋友可能喜欢这样操作,但是其实没必要计算列表的长度了.我们可以直接用列表的迭代来处理,比如: for m in info: print m

python+selenium遍历某一个标签中的内容

一.python+selenium遍历某一个标签中的内容 举个例子:我要获取列表标签<li></li>的内容 根据python+selenium定位到列表整体,使用for循环获取列表文本:可用于校验列表是否存在你需要的文本内容 1.获取内容不包含嵌套层列表 给出代码: from selenium import webdriver import time d = webdriver.Chrome() d.maximize_window() # 窗口最大化###登录某网站 d.get(

JS中数组实现(倒序遍历数组,数组连接字符串)

// =================== 求最大值===================================== <script> var arr = [10,35,765,21345,678,89]; var max = arr [0]; for (var i=0;i< arr.length;i++) { if (max<arr[i]){ max = arr [i]; } } console.log("最大值:" + max); </sc

JS中数组实现 ——— 倒序遍历数组,数组连接字符串

// =================== 求最大值=====================================<script> var arr = [10,35,765,21345,678,89]; var max = arr [0]; for (var i=0;i< arr.length;i++) { if (max<arr[i]){ max = arr [i]; } } console.log("最大值:" + max);</scri

python的遍历模式

python的遍历在程序中很重要,详细了解一下遍历模式,可以应用于任务分发,数据的读写中. python的 递归遍历目录: import os def getAllDirRE(path, sp = ""): #得到当前目录下所有的文件 filesList = os.listdir(path) #处理每一个文件 sp += " " for fileName in filesList: #判断是否是路径(用绝对路径) fileAbsPath = os.path.join

python中的倒序遍历

1.在列表本身倒序 a = [1, 3, 7, 5, 2, 6] a.reverse() # 在列表本身进行倒序,不返回新的值 print(a) # 输出a: # [6, 2, 5, 7, 3, 1] 2.返回副本 a = [1, 3, 7, 5, 2, 6] b = a[::-1] # 返回新的数据,需要变量来接收 print(b) # 输出b: # [6, 2, 5, 7, 3, 1] 3.生成迭代器 a = [1, 3, 7, 5, 2, 6] b = reversed(a) # 生成迭代