今天做数据时,用jupyter先进行个简单的测试,发现个问题,为什么L4中的第二个元素[3,4,2,4]没有删除掉,于是在前面添加打印查看,发现是满足判断条件的,纳闷。。。。
a=[3,4]
L4=[[3,4],[3,4,2,4],[5],[4,2,1],[3,6,4]][print(j) for j in L4 if set(a) <= set(j)]
print('*'*30)
[L4.remove(j) for j in L4 if set(a) <= set(j)]
print(L4)
print('*'*30)
L4.remove([3, 4, 2, 4])
print(L4)
难道是推导式的bug?改为for循环后仍然不对:
a=[3,4]
L4=[[3,4],[3,4,2,4],[5],[4,2,1],[3,6,4]]
for j in L4 :
if set(a) <= set(j):
L4.remove(j)
print(L4)
于是又换成pycharm,试一试:
结果仍然不对啊:
在IPython中同样的:
换一组数据试一试,结果输出是正确的,泪崩。。。什么情况。。。。。。BUG?是删除过程中,要删除的元素如何连续占位list的原因?
增加两个元素,连在一起准备删除的,看来还真是:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
看来是个bug,只能先append提取要删除的元素,再remove了
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++