作者suzuke (suzuke)
看板Python
标题Re: [问题] list.pop() 问题
时间Mon Nov 22 13:35:06 2010
※ 引述《jimmylin212 (JimmyG)》之铭言:
: 想请一个程式片段的错误
: list = [ [1,a],[1,b],[2,c],[2,d],[3,e],[4,f],[5,g] ]
: for i in range(0, len(list)):
: if list[i][0] == 1:
: list.pop(i)
: 当我执行这段程式的时候最後结束都会 index out of range
: 最後大概会有一两个长度的误差,就是会读到空的地方
: 想请问会出现这种问题是为什麽呢?
: 另外要怎麽解决呢?
首先range(0,len(list)) 得到i的范围是0~6
从loop分析, 一开始i=0, 所以list.pop(0)是删掉[1, 'a']
所以list变成[[1, 'b'], [2, 'c'], [2, 'd'], [3, 'e'], [4, 'f'], [5, 'g']]
然後你的i的范围剩下1~6, list根本就没有list[6]了
所以才会出现list index out of range的错误
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.193.77.93
1F:推 jimmylin212:噢 i 一开始就定义好了,之後不会跟着 list 变换吗? 11/22 19:28
2F:→ cibs:i又不是依存在list上面 11/23 01:41
3F:→ suzuke:楼上的意思是? 11/23 10:36
4F:→ apua:i是依存在range(len(L)),而不是依存L 11/24 00:12