我在python中执行“ for y in x”循环,并尝试删除每个空(“”)元素。但是它不能捕获所有空元素,因此我必须多次运行它。
我尝试更改输出并手动将其加载到数组中,该方法也不起作用。我也在Python3.4上尝试过,但是同样的问题仍然存在。
temp
Output: ['18:10:01', '', '', '', '', '', '', '', 'all', '', '', '', '', '', '0.42', '', '', '', '', '', '0.00', '', '', '', '', '', '0.48', '', '', '', '', '', '0.03', '', '', '', '', '', '0.18', '', '', '', '', '98.89']
for c in temp:
if(c==''):
temp.remove(c)
temp
Output: ['18:10:01', 'all', '0.42', '0.00', '', '0.48', '', '', '', '', '', '0.03', '', '', '', '', '', '0.18', '', '', '', '', '98.89']
我希望它通过数组并删除每个空元素,仅保留我想要的数据。但是,正如您从最后一行的输出中看到的,情况并非如此。它仍然有很多空元素。
答案 0 :(得分:1)
您的问题很可能是您在遍历列表时正在修改列表,这可能会引起各种混乱。
解决问题的最佳方法是像这样使用列表理解:
temp = [li for li in temp if li != '']
这将从不为空字符串的列表项中创建一个新列表。
我建议您更多地研究列表理解功能,因为它是功能强大的工具。
答案 1 :(得分:0)
您正在尝试从要迭代的数组中删除元素。它在内部弄乱了索引。更好的方法是返回没有空字符串的新数组。
result = [item for item in the_list if item]