马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
如何删除列表里所有"空格项",?
如题:
a = [' backgroun', '-color:#CDEFF8;"', '', ' ', '', '', '', '2', '', '', '', '', '', ' ', '', '', '', '118.190.95.43', '', '', '', '', '', ' ', '', '', '', '9001', '', '', '', '', '', ' ', '', '', '', '广西', '', '', '', '', '', ' ', '', '', '', 'HTTP', '', '', '', '', '', ' ', '', '', '', '2018-10-02', '', '', '', '', '']
为什么出现以下情况,请大神帮忙解释,为什么不是一遍就遍历清除干净:
第一遍:
>>> for i in a:
if (' ' in i) or ('' == i):
a.remove(i)
>>> print(a)
['-color:#CDEFF8;"', ' ', '2', ' ', '118.190.95.43', ' ', '9001', ' ', '广西', '', '', ' ', '', '', '', 'HTTP', '', '', '', '', '', ' ', '', '', '', '2018-10-02', '', '', '', '', '']
第二遍:
>>> for i in a:
if (' ' in i) or ('' == i):
a.remove(i)
>>> print(a)
['-color:#CDEFF8;"', '2', '118.190.95.43', '9001', '广西', 'HTTP', ' ', '', '', '', '2018-10-02', '', '', '', '', '']
第三遍
>>> for i in a:
if (' ' in i) or ('' == i):
a.remove(i)
>>> print(a)
['-color:#CDEFF8;"', '2', '118.190.95.43', '9001', '广西', 'HTTP', '2018-10-02', '', '', '', '']
第四遍
>>> for i in a:
if (' ' in i) or ('' == i):
a.remove(i)
>>> print(a)
['-color:#CDEFF8;"', '2', '118.190.95.43', '9001', '广西', 'HTTP', '2018-10-02', '', '']
第五遍
>>> for i in a:
if (' ' in i) or ('' == i):
a.remove(i)
>>> print(a)
['-color:#CDEFF8;"', '2', '118.190.95.43', '9001', '广西', 'HTTP', '2018-10-02', '']
第六遍
>>> for i in a:
if (' ' in i) or ('' == i):
a.remove(i)
>>> print(a)
['-color:#CDEFF8;"', '2', '118.190.95.43', '9001', '广西', 'HTTP', '2018-10-02']
解答一下你的疑惑之处。在第一次遍历的时候,当遇到一个需要删除的元素,将之remove,然后整个列表的元素下标就变了。因此会有一部分元素没有被遍历到。例如:第一次遍历的时候将第一个元素' backgroun'删除了,这时'-color:#CDEFF8;'''变成了第一个元素,但它不会被查询了,接着查下变化后的列表a的第二个元素即'',进行remove,此时,原列表中的第四个元素 ' '变成了第二个元素,被跳过去了,接着被查的是'2',以此向后。只要列表中还有能被remove的元素,遍历时都会有元素被跳过去。
你需要逆序遍历,这样才不会有元素被跳过。
- a = [' backgroun', '-color:#CDEFF8;"', '', ' ', '', '', '', '2', '', '', '', '', '', ' ', '', '', '', '118.190.95.43', '', '', '', '', '', ' ', '', '', '', '9001', '', '', '', '', '', ' ', '', '', '', '广西', '', '', '', '', '', ' ', '', '', '', 'HTTP', '', '', '', '', '', ' ', '', '', '', '2018-10-02', '', '', '', '', '']
- for i in a[::-1]:
- if (' ' in i) or ('' == i):
- a.remove(i)
- for i in a:
- print (i)
复制代码
|