在我们关键词清洗的时候有时候会用到for循环然后删除掉其中不想要的元素,但是发现有时候厉遍list列表后结果和自己预估的不一样,网上说应该用list[:],这两者有什么区别呢?
区别
这两者区别其实很好理解,一个是list列表,如果列表使用remove方法删除了一个元素,那么这个list就是删除后的列表
而list[:]是list的副本,和list的关联不相关联,可以理解为使用list.remove()方法,不会影响list[:]
为了更好地理解,网上找了段代码
list = ['a', 'b', 'b', 'd']
for i in list:
if i == 'b':
list.remove(i)
print(list)
输出结果:
['a', 'b', 'd']
我们可以看到b仍然在列表中
这是因为,list[0]不处理,list[1]判断相等删除元素,这时候列表变成了['a', 'b', 'd'],此时循环list[2]值为d,list[1]已经使用过了自然就跳过了'b',
如果我们使用list[:]
list = ['a', 'b', 'b', 'd']
for i in list[:]:
if i == 'b':
list.remove(i)
print(list)
输入结果为
['a', 'd']
转载请注明:思享SEO博客 » python厉遍列表删除元素list与list[:]的区别