1. 程式人生 > >python中列表刪除並遍歷遇到的問題——越界!

python中列表刪除並遍歷遇到的問題——越界!

list3 = [1, 2, 3, 4, 5, 6, 7, 8] # [2, 3, 4, 5, 6, 7, 8] # [2, 4, 5, 6, 7, 8] for i in range(0, len(list3)): if list3[i] < 5: list3.pop(i) print(list3)首先判斷1<5,將1刪除,之後列表變成[2,3,4,5,6,7,8],即且資料整體向前遷移一位之後判斷的不是2,而是3,3< 5將3刪除,之後列表變成[2,4,5,6,7,8]之後判斷的不是4,而是5,5=5,不刪除,輸出5又如:
list3
= [1, 2, 3, 4, 5, 6, 7, 8] for i in list3: if i < 4: list3.remove(i) print(list3)
結果:
[2, 4, 5, 6, 7, 8]
同第一個例子!!!解決:使用逆序遍歷list3 = [1, 2, 3, 4, 5, 6, 7, 8] # [2, 3, 4, 5, 6, 7, 8] # [2, 4, 5, 6, 7, 8] for i in range(len(list3)-1, -1, -1): if list3[i] < 5: list3
.pop(i) print(list3)結果:[5, 6, 7, 8]

顯然刪除了。因為反向遍歷不存在向前推移的情況!!

相關推薦

python列表刪除遇到的問題——越界

list3 = [1, 2, 3, 4, 5, 6, 7, 8] # [2, 3, 4, 5, 6, 7, 8] # [2, 4, 5, 6, 7, 8] for i in range(0, len(list3)): if list3[i] &

python 迭代和的區別

什麼是迭代? 迭代就是重複執行一段程式碼語句塊的能力。分為兩種方式 使用遞迴函式 使用迴圈(for 或 while 迴圈) 假設有個需求,要按照降序列印10以下(包括10),0 以上的整數,用遞迴和迴圈都可以實現,但都要重複執行一段程式碼語句,就是迭代。 遞迴函式實現 先看使用遞迴函式

PythonDataFrame按照行

在做分類模型時候,需要在DataFrame中按照行獲取資料以便於進行訓練和測試。 import pandas as pd dict=[[1,2,3,4,5,6],[2,3,4,5,6,7],[3,4,5,6,7,8],[4,5,6,7,8,9],[5,6

pythonfor用來range函式

栗子:計算斐波那契數列(任一個數都是前兩個數之和的數字序列) Python2.7實現程式碼如下: fibs=[0,1] //初始化定義數列值 for i in range(20):

關於python列表和多層巢狀拆開(自用)

假設存在列表形如 list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]] ,則 使用遍歷查詢列表元素 list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]; for

python學習筆記--列印巢狀list每個資料(列表

遍歷new_list列表中元素 new_list = ["H1","H2",1999] for each_list in new_list: print (each_list); 若列表中包含巢狀列表,怎樣處理? 笨方法:判斷列表中元素是不是列表;並繼續使用f

ArrayList練習 將學生物件新增到集合輸出

package CollectionDemo001; /*  * 用集合儲存5個學生物件,並把學生物件進行遍歷  * 分析:  * A: 建立學生類  * B: 建立集合物件  * C: 建立學生物件  * D: 把學生新增到集合裡  * E: 把集合轉換成陣列  * F:

[原始碼和文件分享]根據PE檔案格式從匯入表獲取載入的DLL匯入函式名稱和地址

背景 瞭解 PE 檔案格式,對於做一些資料分析都是比較重要的基礎。在 PE 檔案格式中,理解匯入表以及匯出表的工作原理,又是重中之重。理解了 PE 格式的匯入表,就可以修改 PE 格式進行 DLL 注入,也可以修改匯入表實現 API HOOK 等。理解了 PE 格式的匯出表,可以不需要 WIN3

python實現 二叉樹的前序序後序層次——遞迴與非遞迴

前序遍歷 # ------ coding:utf-8 ------- class TreeNode: def __init__(self, x): self.val = x

Python列表元素刪除的三種方法的比較

1.remove 從左往右刪除第一個符合條件的元素,返回值是None,()中填要刪除的值 list1=[1,2,3,4,5,6,7,1,2,3,4,4] print(list1.remove(2))

jquery獲取表格所有的checkbox

<table class="table"> <tr> <td><input type="checkbox" checked=“”checked“”></td> <td>測試</td> <

Javalist如何利用進行刪除操作

Java三種遍歷如何進行list的便利刪除:1、for迴圈:常見初五寫法:(由於下標問題達不到想要效果)for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")) list.remo

從文字檔案讀取資料到集合集合

import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; /*  * 需求:從文字檔案中讀取資料(每一行

獲取easyui-datagrid選中的資料,得到目標資料

//id和title是我想要的資料 var docData = $('#grid').datagrid('getChecked'); var arr = new Array(); for(var

在list集合的新增、修改、刪除元素

集合與陣列相似,但他的長度是可變的 list集合繼承了collection介面,list集合的實現類是ArrayList()。 如下: package com.test; import java.util.ArrayList; // import the ArrayL

python關於刪除列表的某個元素

1.remove: 刪除單個元素,刪除首個符合條件的元素,按值刪除 舉例說明: >>> str=[1,2,3,4,5,2,6] >>> str.remove(2) >>> str [1, 3, 4, 5, 2, 6]

[Leetcode] Construct binary tree from inorder and postorder travesal 利用序和後續構造二叉樹

post right clas end opened tree 數組 isp solution Given inorder and postorder traversal of a tree, construct the binary tree. Note: You ma

JavaList集合的

java list 集合 遍歷 一、對List的遍歷有三種方式 List<String> list = new ArrayList<String>(); list.add("testone"); list.add(

python列表的pop、remove、-1

pythonpop:刪除列表中的最後一個元素或指定索引的元素並返回刪除元素的值remove:刪除列表中的指定元素,不返回值-1或其他下標:返回指定下標的值,不改變列表python中列表的pop、remove、-1

AndroidList循環性能對照

最快 next() num trac () ren length iter pan 在android開發中僅僅要是列表式風格界面我們差點兒都須要用到List來存放數據,在數量非常少的List的話差點兒不論什麽一種循環遍歷方式總體性能都無區別。可是當我們遇