- 论坛徽章:
- 0
|
list要删除里面的某些元素,怎么做?
一个简单的代码就是这样:
- l = [1, 2, 3, 3, 3]
- for i in l:
- if i == 3:
- l.remove(i)
- print l
复制代码
但结果不对, 显示的是 [1, 2, 3]
那好,换个删法
- l = [1, 2, 3, 3, 3]
- for i in range(len(l)):
- if l[i] == 3:
- del l[i]
- print l
复制代码
结果跟惨,直接抛IndexError了
再试一个
- l = [1, 2, 3, 3, 3]
- for i in range(len(l)-1, -1, -1):
- if l[i] == 3:
- del l[i]
- print l
复制代码
噢,这次可以了, 但这种方法并不是很漂亮.
再用个漂亮的方法吧, python手册推荐的
- l = [1, 2, 3, 3, 3]
- l = filter(lambda x: x != 3, l)
- print l
复制代码
倒序删除可以成功,而其他的遍历删除法都会出错.
说明了一旦你进入了list的遍历循环中,再对这个list做操作时一定要小心,很多错误看起来并不明显.
最好使用用系统给的那些函数,filter, reduce, map
[ 本帖最后由 xxandxx 于 2007-5-29 18:49 编辑 ] |
|