永发信息网

如何把列表外的列表移除python

答案:1  悬赏:80  手机版
解决时间 2021-03-21 00:19
如何把列表外的列表移除python
最佳答案
python的列表list可以用for循环进行遍历,实际开发中发现一个问题,就是遍历的时候删除会出错,例如
l = [1,2,3,4]
for i in l:
if i != 4:
l.remove(i)
print l
这几句话本来意图是想清空列表l,只留元素4,但是实际跑起来并不是那个结果。再看下面,利用index来遍历删除列表l

l = [1, 2, 3, 4]
for i in range(len(l)):
if l[i] == 4:
del l[i]

print l
这样没问题,可以遍历删除,但是列表l如果变为 l = [1,2,3,4,5]
如果还是按照上面的方法,设想一下,range开始的范围是0-4,中间遍历的时候删除了一个元素4,这个时候列表变成了= [1,2,3,5],这时候就会报错了,提示下标超出了数组的表示,原因就是上面说的遍历的时候删除了元素

所以python的list在遍历的时候删除元素一定要小心

可以使用filter过滤返回新的list

l = [1,2,3,4]
l = filter(lambda x:x !=4,l)
print l

这样可以安全删除l中值为4的元素了,filter要求两个参数,第一个是规则函数,第二个参数要求输入序列,而lambda这个函数的作用就是产生一个函数,是一种紧凑小函数的写法,一般简单的函数可以这么些

或者可以这样
l = [1,2,3,4]
l = [ i for i in l if i !=4]//同样产生一个新序列,复值给l
print l

或者干脆建立新的list存放要删除的元素
l = [1,2,3,4]
dellist = []
for i in l:
if i == 4:
dellist.append(i)
for i in dellist:
l.remove(i)
这样也能安全删除元素
所以要遍历的时候删除元素一定要小心,特别是有些操作并不报错,但却没有达到预期的效果

上面说到产生新序列,赋值等等,用python的id()这个内置32313133353236313431303231363533e58685e5aeb931333363383461函数来看对象的id,可以理解为内存中的地址,所以有个简要说明
如果
l = [1,2,3,4]
ll = l
l.remove(1)
print l//肯定是[2,3,4]
print ll//这里会是什么?
如果用id函数查看的话就发现
print id(l),id(ll)
打印出相同的号码,说明他们其实是一个值,也就是说上面的print ll将和l打印的一样,所以python有这种性质,用的时候注意一下就行了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
单选题下列关于胚的叙述,错误的是A.新植物体
格力变频空调制热时出现很大的噪音,空调用了
弯弯山路阅读答案
古剑奇谭中让人鱼活在梦中的是什么
忘了是怎么开始也许就是对你有一种感觉,忽然
乐恩迪广告地址在什么地方,想过去办事
全民奇迹精灵要塞中的讨伐奖励怎么领
拉杆射灯的拉杆尺寸是?
西安钟楼附近哪有按摩
中国建设银行信用卡怎么三个卡号
商业模式有哪些具体方式?
怎样管理好酒店制服房
请问北京西城区白塔寺地区何时拆迁?政策大概
空气和水是我们早已熟悉的物质,通过化学的学
我有一台老式手摇留声机坏了,弹簧断了,济南
推荐资讯
上品茶坊地址有知道的么?有点事想过去
飞行员起飞时说的V1是什么意思
淘宝信用卡百分之一手续费怎么算
炫舞时代一直在获取个人信息界面
康龙休闲馆怎么去啊,有知道地址的么
征途召唤师 五行选什么?
如图是X、Y、Z三种物质的溶解度曲线,①A点所
e时代网络科技地址有知道的么?有点事想过去
描写擦窗户的好词
刚拿c|驾照能开6米以下的轻卡吗
高等学校教学存在的主要问题有哪些
求横山光辉三国志的原版歌曲
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?