【问题标题】:Python loop through array doesn't catch every element [duplicate]通过数组的Python循环不会捕获每个元素[重复]
【发布时间】:2019-12-28 00:36:10
【问题描述】:

我在 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'] 

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

【问题讨论】:

    标签: arrays python-3.x python-3.6


    【解决方案1】:

    您正试图从正在迭代的数组中删除元素。它在内部弄乱了索引。更好的方法是返回一个没有空字符串的新数组。

    result = [item for item in the_list if item]
    

    【讨论】:

      【解决方案2】:

      您的问题很可能是您在遍历列表时正在修改列表,这可能会让人感到困惑。

      解决问题的最佳方法是使用 List Comprehension,如下所示:

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

      这将创建一个仅包含非空白字符串的列表项的新列表。

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

      【讨论】:

        猜你喜欢
        • 2015-11-09
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多