python - 查找并替换列表宽度 Python 中的空行

标签 python list loops

我使用的是 Python 2.7.5,我有一个如下所示的列表:

('2047', '1971', '', '1919', '', '1878', '', '', '1760', '1731', '', '1667', '', '')

列表充满了漏洞,我想识别空行并用下一个非空行的数据填充这些空行。如果没有包含数据的下一行,我想将它们设置为 0。像这样:

('2047', '1971', '1919', '1919', '1878', '1878', '1760', '1760', '1760', '1731', '1667', '1667','0','0')

我如何使用 Python 执行此操作?我可以做一个简单的 for 循环来识别空行,但我不知道如何填充空白... 任何帮助将非常感激! 谢谢 马丁

最佳答案

您可以使用 itertools.groupby为此:

>>> from itertools import groupby
>>> t = ('2047', '1971', '', '1919', '', '1878', '', '', '1760', '1731', '', '1667', '', '')
>>> out = []
>>> prev = None
for k, g in groupby(reversed(t)):
    if k == '' and prev is None:
        out.extend('0' for _ in g)
    elif k == '' and prev is not None:
        out.extend(prev for _ in g)
    else:
        for x in g:
            out.append(x)
        prev = x
...             
>>> out.reverse()
>>> out
['2047', '1971', '1919', '1919', '1878', '1878', '1760', '1760', '1760', '1731', '1667', '1667', '0', '0']

关于python - 查找并替换列表宽度 Python 中的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27100845/

相关文章:

python - Selenium:等到 WebElement 中的文本发生变化

python - 包装对象的最佳 Python 方式是什么?

python - 根据条件在 Pandas 数据框中迭代并分配值

jquery - 使用Jquery将单个UL LI列表转换为基于类的层次嵌套列表

bash - while 循环永远不会结束

python - Pandas:将月份名称转换为 Int + Concat 为列并转换为日期时间

python - 如何对包含多个数值列表的字典进行排序?

java - Arrays.copyOf 中的看似差异

R 函数生成不正确的结果

mysql - 带循环的动态添加列