今天在抓取数据的时候,遇到一个问题困扰了我好久,后来发现原来是基础不牢引发的bug。下面我就给大家分享一下,关于列表中的del与remove用法深究。看代码
strlist11=['1','2','3','@','@','4','5','6','#','7','8','9','%','10','11','12','$','13','14'] strlist1=['1','2','3','@','4','5','6','#','7','8','9','%','10','11','12','$','13','14'] strlist2=['1','2','3','@','4','5','6','#','7','8','9','%','10','11','12','$','13','14'] strlist4=['1','2','3','@','@','4','5','6','#','7','8','9','%','10','11','12','$','13','14'] strlist3=['1','2','3','@','@','4','5','6','#','7','8','9','%','10','11','12','$','13','14'] shanchu=['@','#','%','$'] i=0 for str in strlist1: for shan in shanchu: if shan==str: del strlist1[i] break i+=1 # strlist1中要被删除元素不在一起 m=0 for str in strlist11: for shan in shanchu: # 在这里我们打印一下strlist11[m]与strlist3[m] print('strlist3[%d]:%s===strlist11[%d]:%s'%(m,strlist3[m],m,strlist11[m])) if shan==str: del strlist11[m] break m+=1 print('*' * 10) #strlist11中要被删除元素在一起 for str in strlist2: for shan in shanchu: if shan==str: strlist2.remove(str) break # strlist2中要被删除元素不在一起 n=0 for str in strlist4: # 在这里我们打印一下strlist11[n]与strlist3[n] print('strlist3[%d]:%s===strlist4[%d]:%s' % (n,strlist3[n],n, strlist4[n])) for shan in shanchu: if shan==str: strlist4.remove(str) break n+=1 print('*'*10) # strlist4中要被删除元素在一起 print('# strlist1中要被删除元素不在一起') print(strlist1) print('# strlist11中要被删除元素在一起') print(strlist11) print('# strlist2中要被删除元素不在一起') print(strlist2) print('# strlist4中要被删除元素在一起') print(strlist4)
# 打印结果如下
# strlist1中要被删除元素不在一起
# ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14']
# # strlist11中要被删除元素在一起
# ['1', '2', '3', '@', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14']
# # strlist2中要被删除元素不在一起
# ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14']
# # strlist4中要被删除元素在一起
# ['1', '2', '3', '@', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14']
# 可怕吗,居然没删掉
# 现在来拿strlist3看一下为什么被删除的元素在一起后就不能被删除了,在strlist11与strlist3中设置下标,每次循环strlist11或者strlist3时打印strlist3与strlist11,或者打印strlist3与strlist11
# 打印结果如下
# strlist3[0]:1===strlist11[0]:1
# strlist3[0]:1===strlist11[0]:1
# strlist3[0]:1===strlist11[0]:1
# strlist3[0]:1===strlist11[0]:1
# **********
# strlist3[1]:2===strlist11[1]:2
# strlist3[1]:2===strlist11[1]:2
# strlist3[1]:2===strlist11[1]:2
# strlist3[1]:2===strlist11[1]:2
# **********
# strlist3[2]:3===strlist11[2]:3
# strlist3[2]:3===strlist11[2]:3
# strlist3[2]:3===strlist11[2]:3
# strlist3[2]:3===strlist11[2]:3
# **********
# strlist3[3]:@===strlist11[3]:@
# **********
# strlist3[4]:@===strlist11[4]:4
# strlist3[4]:@===strlist11[4]:4
# strlist3[4]:@===strlist11[4]:4
# strlist3[4]:@===strlist11[4]:4
# **********
# strlist3[5]:4===strlist11[5]:5
# strlist3[5]:4===strlist11[5]:5
# strlist3[5]:4===strlist11[5]:5
# strlist3[5]:4===strlist11[5]:5
# **********
# strlist3[6]:5===strlist11[6]:6
# strlist3[6]:5===strlist11[6]:6
# strlist3[6]:5===strlist11[6]:6
# strlist3[6]:5===strlist11[6]:6
# **********
# strlist3[7]:6===strlist11[7]:#
# strlist3[7]:6===strlist11[7]:#
# **********
# strlist3[8]:#===strlist11[8]:8
# strlist3[8]:#===strlist11[8]:8
# strlist3[8]:#===strlist11[8]:8
# strlist3[8]:#===strlist11[8]:8
# **********
# strlist3[9]:7===strlist11[9]:9
# strlist3[9]:7===strlist11[9]:9
# strlist3[9]:7===strlist11[9]:9
# strlist3[9]:7===strlist11[9]:9
# **********
# strlist3[10]:8===strlist11[10]:%
# strlist3[10]:8===strlist11[10]:%
# strlist3[10]:8===strlist11[10]:%
# **********
# strlist3[11]:9===strlist11[11]:11
# strlist3[11]:9===strlist11[11]:11
# strlist3[11]:9===strlist11[11]:11
# strlist3[11]:9===strlist11[11]:11
# **********
# strlist3[12]:%===strlist11[12]:12
# strlist3[12]:%===strlist11[12]:12
# strlist3[12]:%===strlist11[12]:12
# strlist3[12]:%===strlist11[12]:12
# **********
# strlist3[13]:10===strlist11[13]:$
# strlist3[13]:10===strlist11[13]:$
# strlist3[13]:10===strlist11[13]:$
# strlist3[13]:10===strlist11[13]:$
# **********
# strlist3[14]:11===strlist11[14]:14
# strlist3[14]:11===strlist11[14]:14
# strlist3[14]:11===strlist11[14]:14
# strlist3[14]:11===strlist11[14]:14
# **********
# strlist3[0]:1===strlist4[0]:1
# **********
# strlist3[1]:2===strlist4[1]:2
# **********
# strlist3[2]:3===strlist4[2]:3
# **********
# strlist3[3]:@===strlist4[3]:@
# **********
# strlist3[4]:@===strlist4[4]:4
# **********
# strlist3[5]:4===strlist4[5]:5
# **********
# strlist3[6]:5===strlist4[6]:6
# **********
# strlist3[7]:6===strlist4[7]:#
# **********
# strlist3[8]:#===strlist4[8]:8
# **********
# strlist3[9]:7===strlist4[9]:9
# **********
# strlist3[10]:8===strlist4[10]:%
# **********
# strlist3[11]:9===strlist4[11]:11
# **********
# strlist3[12]:%===strlist4[12]:12
# **********
# strlist3[13]:10===strlist4[13]:$
# **********
# strlist3[14]:11===strlist4[14]:14
# **********
# # strlist1中要被删除元素不在一起
# ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14']
# # strlist11中要被删除元素在一起
# ['1', '2', '3', '@', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14']
# # strlist2中要被删除元素不在一起
# ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14']
# # strlist4中要被删除元素在一起
# ['1', '2', '3', '@', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14']
# 删除一个元素后strlist3[4]与strlist11[4]就不一样了,strlist3[4]与strlist4[4]同样不一样
# 这就表明了什么,表明了列表不管使用del或者是remove删除元素,都会让后下一个元素位置前移,从而导致新列表数据出错。知道这个了,你们以后还会通过del或者是remove删除元素,直接获取一个新列表吗
评论