Py学习  »  Python

python循环遍历数组不捕获每个元素[重复]

Chris • 4 年前 • 787 次点击  

这个问题已经有了答案:

我在python中执行“for x in y”循环,并尝试删除每个空(“”)元素。但它不能捕获每个空元素,我必须多次运行它。

我尝试更改输出并手动将其加载到数组中,但该数组也不起作用。我也在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'] 

我期望它通过数组并删除每个空元素,只留下我想要的数据。但正如您从最后一行的输出中看到的,情况并非如此。它仍然有相当多的空元素。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38554
 
787 次点击  
文章 [ 2 ]  |  最新文章 4 年前
MjZac
Reply   •   1 楼
MjZac    4 年前

您正在尝试从正在迭代的数组中删除元素。它正在把指数内部搞得一团糟。更好的方法是返回一个没有空字符串的新数组。

result = [x for x in y if x is not '']
Ahndwoo
Reply   •   2 楼
Ahndwoo    4 年前

您的问题很可能是您在迭代列表时修改了列表,这会造成各种各样的混乱。

解决问题的最佳方法是使用这样的列表理解:

temp = [li for li in temp if li != '']

这将在非空字符串的列表项中创建一个新列表。

我建议更多地了解列表理解,因为它是一个强大的工具。