pytyhon 用del删除列表元素时,提示越界?

tmp = []
for i in range(5):
【\t】i = input()
【\t】tmp.append(i)
tmp[0] = {}
tmp[0]['name'] = 'make'
tmp[0]['age'] = 28
tmp.insert(0,88)
#del tmp[1] 在此时删除元素不会出错
for i in range(len(tmp)): #生成列表下标
【\t】if 'dict' in str(type(tmp[i])): #判断当前下标元素是否为一个字典
【\t】【\t】del tmp[i] #如果是,删除该下标处元素
print(tmp)
------------------------------------------------错误信息如下------------
sys
path
git
vim
what?
Traceback (most recent call last):
【\t】File "未命名.py",line 11 in
【\t】【\t】if 'dict' in str(type(tmp[i])): #判断当前下标元素是否为一个字典

IndexError:list index out of range

下标越界错误 ,好像没有越界啊,我要删除元素类型为字典的元素【1】
【\t】为一个tab键

3个回答

for i in range(len(tmp)): #生成列表下标
if 'dict' in str(type(tmp[len(tmp) - i - 1])):
从后往前遍历就可以了。

由于采用数组下标遍历方式,遍历过程中删除了数组中的元素,导致数组中元素个数减少,那么在后续if 'dict' in str(type(it)):判断时,出现下标越界

 tmp = []
for i in range(5):
    i = input()
    tmp.append(i)

print(tmp)
tmp[0] = {}
tmp[0]['name'] = 'make'
tmp[0]['age'] = 28
tmp.insert(0,88)
print(tmp)
#del tmp[1] 在此时删除元素不会出错

for it in tmp: #生成列表下标
    if 'dict' in str(type(it)): #判断当前下标元素是否为一个字典
        tmp.remove(it) # 从数组中删除该元素
print(tmp)

--------------------打印结果-----------------------------
[0, 1, 2, 3, 4]
[88, {'name': 'make', 'age': 28}, 1, 2, 3, 4]
[88, 1, 2, 3, 4]
SandyLsnSmile
SandyLsnSmile 回复qq_41665419: 请采纳,谢谢
10 个月之前 回复
qq_41665419
qq_41665419 多谢,这个方法很好,安全
10 个月之前 回复

最后一个for的i遍历可以到4,但删除了一个之后,只剩下4个了,也就是说tmp[4]已经不存在了,可以不用下标,直接用元素进行迭代

 tmp = []
for i in range(5):
    i = input()
    tmp.append(i)
tmp[0] = {}
tmp[0]['name'] = 'make'
tmp[0]['age'] = 28
tmp.insert(0,88)
#del tmp[1] 在此时删除元素不会出错
for it in tmp: #生成列表下标
    if 'dict' in str(type(it)): #判断当前下标元素是否为一个字典
        del it #如果是,删除该下标处元素
print(tmp)
qq_41665419
qq_41665419 多谢
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python中使用del a与del a[:]删除列表的区别
input: a = [1,2,3] del a[:] a output: [] 这告诉我们使用del a[:]会删除列表中的所有元素,但是不会删除列表a input: a = [1,2,3] del a a output: NameError: name 'a' is not defined # 列表a已经不存在了 这告诉我们使用del a 不仅会删除列表中的所有元素,同时会删除列表a ...
删除列表多个元素
a=[1,20,30,'',None,'','',None,10,'',''] c=['',None] b=['10,20,200','2,40',4] #方法一 for i in a: for j in c: if j in a: a.remove(j) print(a) #方法二 for i in c: while i in a: ...
java循环删除列表元素
在循环中删除一个列表元素   考虑下面的代码,迭代过程中删除元素: ArrayList list = new ArrayList(Arrays.asList("a", "b", "c", "d")); for (int i = 0; i < list.size(); i++) { list.remove(i); } System.out.println(list);  
列表元素增加与删除
<p>rn <br />rn</p>rn<p>rn 20周年限定一卡通!<span style="color:#337FE5;">可学Python全部课程</span>,仅售799元(原价1792元),<span style="color:#E53333;">还送漫威正版授权机械键盘+CSDN 20周年限量版T恤+智能编程助手!</span> rn</p>rn<p>rn 点此链接购买:rn</p>rn<table>rn <tbody>rn <tr>rn <td>rn <span style="color:#337FE5;"><a href="https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy" target="_blank">https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy</a><br />rn</span> rn </td>rn </tr>rn </tbody>rn</table>rn<p>rn <br />rn</p>rn<p>rn 购买课程后,可扫码进入学习群<span style="font-family:&quot;">,获取董付国老师答疑</span> rn</p>rn<p>rn <img src="https://img-bss.csdn.net/201908070531151511.jpg" alt="" /> rn</p>rn<p>rn 董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。rn</p>
python列表元素的删除
#今天看到有人说列表删除元素会碰到index out of range的问题:lst = [0, 1, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 44, 1, 0] for i in range(len(lst)): if(lst[i] == 0): del lst[i] #list index out of ra...
用循环子删除一个列表元素时的错误
ArrayListDemo这个类用循环子删除一个列表元素时,报错:rnarraylistdemo.java:19: remove() in java.util.Iterator cannot be applied to (int)rnrn useriter.remove(2);rn ^rn1 errorrn源代码:rnpackage com.wrox.utilities;rnimport java.util.ArrayList;rnimport java.util.Iterator;rnpublic class ArrayListDemorn public static void main(String[] args)rn user usr1=new user("J Smith","123-444-4444");rn user usr2=new user("M Walker","123-555-5555");rn user usr3=new user("R Johnson","123-666-6666");rn ArrayList userlist=new ArrayList();rn userlist.add(usr3);rn userlist.add(usr1);rn userlist.add(usr2);rn user usr=(user)userlist.get(1);rn System.out.println("second user...");rn System.out.println("username:"+usr.getUsername());rn System.out.println("user phone number:"+usr.getPhoneNumber());rn System.out.println("userlist...");rn Iterator useriter=userlist.iterator();rn useriter.remove(2);//此行rn while (useriter.hasNext())rn rn usr=(user)useriter.next();rn System.out.println("username:"+usr.getUsername());rn System.out.println("user phone number:"+usr.getPhoneNumber());rn rn rn
Python的del语句与列表
一 介绍 使用 del 语句可以从一个列表中依索引而不是值来删除一个元素。这与使用 pop() 返回一个值不同。可以用 del 语句从列表中删除一个切割,或清空整个列表。  二 实例 >>> a =[-1,2,66.25,333,333,2343.6] >>>del a[0] >>> a [2,66.25,333,333,2343.6] >>>del a[2:4] >>>
列表常见操作3 列表元素删除
<p style="color:#1F0909;">rn <span><strong>讲课方式:</strong></span> rn</p>rn<p style="color:#1F0909;">rn <span> 课件 + 代码案例讲解方式</span> rn</p>rn<p style="color:#1F0909;">rn <span><strong>课程资料提供</strong></span><span>:</span> rn</p>rn<p style="color:#1F0909;">rn <span> 课程开发工具、课程源代码、课程视频</span> rn</p>rn<p style="color:#1F0909;">rn <span><strong>课程知识点涵盖:</strong></span> rn</p>rn<p style="color:#1F0909;">rn <span> 配置环境、使用语言、 使用版本、工具版本、Python基础语法</span> rn</p>rn<p style="color:#1F0909;">rn <span>课程特色 </span> rn</p>rn<p style="color:#1F0909;">rn <span> 适合0基础学员快速Python语言入门开发课程</span> rn</p>rn<p style="color:#1F0909;">rn <span> 全程使用最新的Python3版本授课,方便大家进入企业的版本问题</span> rn</p>rn<p style="color:#1F0909;">rn <span> 全程采用课件+代码案例演示的方式让大家理解</span> rn</p>rn<p style="color:#1F0909;">rn <span> 老师秉承授人以鱼不如授人以渔的方式进行录制课程</span> rn</p>
Python列表操作—删除列表元素问题
 有时候可能需要删除列表中指定元素的所有重复,我们很自然就想到用“循环+remove()”的方法,但是具体操作时很有可能会出现出乎意料的错误,代码运行没有错误,但结果却是错的,或者结果有时候正确有时候不正确。 例如: if __name__ == '__main__': x = [1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1] for i in x: ...
Python中列表元素删除
Python中列表元素的删除方式 del命令删除 列表的pop()方法删除 以及列表的对象的remove()方法删除
Python删除列表元素不全
Python会自动对列表内存进行收缩并移动列表元素以保证所有元素之间没有空隙,增加列表元素也会自动扩展内存并对元素进行移动,每当插入或删除一个元素,该元素位置后面的元素的索引就都改变了。所以对列表做删除或添加操作的时候,如果索引改变了的话,会出现未预期的结果。
LintCode:删除列表中的元素
#LintCode:删除列表中的元素/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public:
再谈谈列表元素的删除
之前(以及更早之前)都提到了列表元素的删除,也提到过几种方法,有兴趣的朋友可以去看看,其中一种个人比较倾向的写法大概是这个样子(C++): auto iter = vec.begin(); while (iter != vec.end()) { if (isEven(*iter)) { iter = vec.erase(iter); } else { ++iter; }
列表元素的几种删除方法
列表元素可以用del语句、pop()方法、remove()方法进行删除。 1.del 语句 del LIst[0] del可以删除任意已知位置的列表元素。 2.pop() List.pop() 一般用来弹出列表最后一个元素(可以接收这个变量),也可在括号里指定索引,来删除指定位置的列表元素。 3.remove() List.remove('123') remove()不需...
452删除列表中的元素
452删除列表中的元素 引用块内容 特殊情况考虑1.首节点为空if(head==NULL) { return 0; }2.尾节点为空1->null 1 结果应为 null3.1->null->1/** * Definition for singly-linked list. * struct ListNode { *
python 删除列表中元素
1. del 删除列表中指定位置上的元素 l = [1,2,3,4,5] del l[2]  -> [1,2,4,5] del l  -> 删除整个列表 当要用del循环删除元素时,应当倒序删除,否则下标会发生变化; 2. pop 删除并返回指定位置上的元素 l = [1,2,3,4,5] l.pop(len(l)-1) -> 5   和l.pop()效果相同 l.pop(3) 
-=python=- 列表元素的删除问题!
大家看这一个字典:rnrnnames='Leira':'entered':1,'id':['garfield','coolgarfield'],\rn'pig':'entered':0,'id':['zhutou','zhu']rnrn这个数据结构比较复杂,它是对应每一个名字有一个字典,存放他的登陆状况,和对应ID!rnrn试想,有一个函数,希望删除对应某个name的对应ID,一般会这么写:rnrndef delID(name,ID):rn if ID in names[name]['id']:rn del names[name]['id'][ name[name]['id'].index(ID) ] #probrnrn因为我们知道,删除列表的方式一般都是: del list[index]rn于是就会出现上面prob那行的状况!似乎有悖于python优雅简洁的风格!如果结构更复杂的话,那么象这样的代码岂不是恶梦?!rn而且,在上面的in判断中,已经查找过一遍元素,在下面的index方法中有查找一遍,显然效率颇有损失!rnrn不知道删除列表中的对应元素,有没有更简洁,效率更高的方式?rnrn(初学python,希望不会贻笑大方~ )
删除列表中重复的元素
第一种:转换为集合的形式,集合不能重复 lt = [1,2,3,5,6,4,3,2,5] s = set(lt) print(s) 第二种: lt1 = [1,2,44,54,6,43,2,44,78,54] lt2 = [] for i in lt1: if not i in lt2: lt2.append(i) print(lt2) ...
js jq 删除列表元素
if ($.inArray(value,array_1)==-1) { array_1.splice($.inArray(value,array_1),1) }  
del del del del del
del del del del del del del del del del del del del del del del del del
列表索引越界or空
data = [1,8,5,9,7,4,5] print(data[10:]) #返回空 print(data[10]) #出错,越界
DEL键删除
我想通过DEL键删除选中的数据项,这个是可以做到的!,但我的菜单里caption里用的是 “删除(&D)\tDel”rn怎么按del键就不能实现删除功能呢?怎么实现del呢?我的Ctrl+V等都可以实现
del强制删除del.bat
强制删除电脑不需要的文件或文件夹. 操作方法: 1.将文件或文件夹直接拖到del.bat文件中
del为什么删除没反应!
大家帮忙看看!rnorder.asprn----rnrn rn <%=rs("dingdan")%> rn ">删除rn rn rnrn-----rnrn在rndel.asp中rnrn------rn conn.execute "Delete from [orders] where id="&request("id") rn----rnrn但是在网页中点击“删除”,却一点反应都没有?rn哪里出问题了?
用del cookies为什么删除不了cookie?????
用网上说的30秒删除cookies的那些代码,为什么删除不了cookiesrndel /f /q %userprofile%\cookies\*.*rnrn注:用这个代码cookies文件里面的txt文件是被删除了,但是这样删除,好像并没有把这个cookies完全删除,我抓包读取相关网站的cookies,还是可以读取他的值;但是我用ie里面的清空cookies工具,就不存在这个问题,这是什么问题呢?rnrndel /f /q %userprofile%\cookies\*.* 这个语句,有点像,我直接到cookies文件夹里面,把对应网站的cookies的txt文件删除之后产生的效果是一样的,都可以读取被删除的cookies的值,这是什么原因呢?rnrn需望大家帮帮忙,解答一下,在网上找了,也没有找到这方面的信息!!!!!rnrn
总是提示 vector 越界
之前是这样写的,也许是优先级的原因,c++并未先计算i - eraoff,而是先 (Proper2.contours).begin() + i ,导致越界。加上括号,更改之后解决问题。 vector>::iterator it = (Proper2.contours).begin() + i - eraoff;
图片提示越界(求助)
rn rn rn rn rn rn rnrnrnrn.thumbImagern rn position:inherit;rn max-width:300px;rn width:expression(this.width>300?"300px":this.width);rn max-height:300px;rn z-index: 1000;rn rnrn上面代码是在ASPDataListZ 中 实现效果如图rn[img=http://www.art-home.com.cn/5.jpg][/img]rn中代码为提示内容rnrn[img=http://www.art-home.com.cn/4.jpg][/img]rn上图图片越界:但是下面的滚动条也无法拖动(鼠标离开图片,就隐藏)rnrn请问该怎么解决??rnqq1391995977
为什么提示越界?
statusbar1.Panels[0].text:='Listening...'rn我在程序用了上面一句,编译时提示:'list index out of bounds (0)'rn请问这是为何呀?
asp.net删除时提示
asp.net删除时提示asp.net删除时提示asp.net删除时提示asp.net删除时提示asp.net删除时提示
删除时的提示
请问这样为什么会报错? 指定的参数(e.Row.Cells[1].Controls[0])已超出有效值的范围。rn参数名: index rnrnif (e.Row.RowType == DataControlRowType.DataRow)rn rn // 给删除按钮加提示rn LinkButton btnDelete = (LinkButton)e.Row.Cells[1].Controls[0];rn btnDelete.OnClientClick = "return confirm('您确定要删除此行吗?');";rn
删除时提示
我在updatePanel 里 放了GridView 点删除时 我想 弹出 对话框,问是否删除,怎么写
python列表中的remove和del
列表的remove()方法课指定要删除的元素值,若要指定按索引位置删除,则使用的是del.
ListView删除越界的问题
[code=Delphi(Pascal)]rnprocedure checkDownload(var lv:TListView;cachePath,filedir:string);rnvarrn I,n: Integer;rnbeginrn with lv dorn beginrn if lv.Items.Count>0 thenrn beginrn for I := Items.Count-1 downto 0 dorn beginrn if MD5Print(MD5File(cachePath+items[i].SubItems[0]))=Items[i].SubItems[2] thenrn beginrn Items.Delete();rnrn if FileExists(filedir+items[i].SubItems[0]) thenrn DeleteFile(filedir+items[i].SubItems[0]);rnrn if not DirectoryExists(ExtractFilePath(filedir+items[i].SubItems[0])) thenrn ForceDirectories(ExtractFilePath(filedir+items[i].SubItems[0]));rnrn CopyFile(PChar(cachePath+items[i].SubItems[0]),PChar(filedir+items[i].SubItems[0]),True);rnrn end;rn end;rn end;rnrn end;rnend;rn[/code]rnrn代码的意思 判断 文件的md5 (文件名:items[i].SubItems[0]),和给出来的md5值(Items[i].SubItems[2])相等就删除这一行。rnrn请问怎么写?rnrn谢谢
飞机大战(七):删除越界
2.删除越界 1>.在hero,Airplane,bee,bullet中添加越界方法 hero类中需添加的越界方法 bullet类中需添加的越界方法 Airplane和bee类中需添加的越界方法 2>.在ShootGame中添加删除越界方法
列表删除时,如何获得列表的ID
如题:rn列表库删除一条记录时,如何获得列表的IDrnrn
如何删除用del语句删除过期的记录?
比如,我给用户设定删除3个月之前的业务表记录rn应该怎么写语句?
迭代时删除指定元素
[code=Java]rnimport java.util.ArrayList;rnimport java.util.Iterator;rnpublic class ArrayListRemovernrn public static void main(String[] args)rn ArrayList list=new ArrayList();rn list.add("111");rn list.add("222");rn list.add("333");rn System.out.println(list.iterator());rn for(Iterator it=list.iterator();it.hasNext();)rn rn String ele=it.next();rn rn if(ele.equals("222"))rn rn list.remove(ele);rn rn rn rnrnrn[/code]rnrn这样能够成功删除"222"rn但是if(ele.equals("222"))rn改成 if(ele.equals("111")) 或者if(ele.equals("333"))运行时都会出现ConcurrentModificationExceptionrn为什么”222“ 第二个元素就可以成功删除呢?
更新列表list删除del添加和获取长度
list =  ['apple', 'iphone', '2016', '2017']print ('初始列表', list);list[2] = 2015print ('一次更新',list);list.append(2018);print ('二次更新', list);del list[2];print ('删除之后', list)a = len(['apple', 'iphone', '20...
【CSS】body元素的background-image越界
为什么body元素的背景图片是从边框外边开始显示的[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]rn[img=https://img-bbs.csdn.net/upload/201601/13/1452680429_468822.jpg][/img]
Python 列表下表越界问题
在用Python写一下求最长公共子序列的问题,List C表示比较的结果,List B表示结果来自上还是左还是左上。但是一直报错说我越界,我感觉自己的理论没有问题啊,百思不得其解,求助![img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]rn[img=https://img-bbs.csdn.net/upload/201705/22/1495440265_712133.png][/img]rn以下是我的代码,红色的那行是报错的地方:rn[code=python]while 1:rn s = raw_input()rn a = raw_input()rn b = raw_input()rn ss = s[::-1]rn slist = list(s)rn slist.insert(0, '0')rn ablist = list(a + b)rn ablist.insert(0, '0')rn sslist = list(ss)rn sslist.insert(0, '0')rn C = [([0] * (len(slist))) for i in range((len(ablist)))]rn B = [([0] * (len(slist))) for i in range((len(ablist)))]rnrn # print Crn # print slistrn # print ablistrn for i in range(1, len(slist)):rn for j in range(1, len(ablist)):rn if slist[i] == ablist[j]:rn [color=#FF0000]C[i][j] = C[i - 1][j - 1] + 1[/color]rn print C[i][j]rn B[i][j] = 1rn elif C[i - 1][j] >= C[i][j - 1]:rn C[i][j] = C[i - 1][j]rn B[i][j] = 3rn else:rn C[i][j] = C[i][j - 1]rn B[i][j] = 2rn print B[/code]rn错误是:rnTraceback (most recent call last):rn File "H:/PythonProject/Algorithm_Design/Train.py", line 26, in rn elif (C[i - 1][j] >= C[i][j - 1]):rn[color=#FF0000]IndexError: list index out of range[/color]rnrnProcess finished with exit code 1
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制