python [:]

今天遇到个问题,for循环+remove发现程序只会执行一次就中断执行了,直接上代码如下

x = ['a', 'b', 'c', 'd']
y = ['b', 'c']
for i in x:
	if i in y:
		x.remove(i)
print x
诉求很简单,匹配到就删掉,但实际输出是什么呢,看下图



为啥c没有被remove掉,只有b被remove掉了?原来问题就在x上,程序运行初期加载的list值和运行一次remove后的值不同,程序这是选择“罢工”并且采用“和平”的解决方式-中断运行并输出作为处理手段,这样我们才看到了['a', 'c', 'd']

那, 怎么才能达到我们的remove意愿呢,仔细看下面code跟之前的有什么不同

x = ['a', 'b', 'c', 'd']
y = ['b', 'c']
for i in x[:]:
	if i in y:
		x.remove(i)
print x

对了,就是一个 [:] 搞定了, [:]的用法请自行度娘,谷歌,或者采用list中转,或者pop来达到目的,不一一赘述


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值