【问题标题】:Printing elements from multiple lists as a combined line将多个列表中的元素作为组合行打印
【发布时间】:2018-04-17 01:00:12
【问题描述】:

我已将多个文件中的数据合并到一个列表列表中。其中每个单独的列表代表文件中找到的行。

Final_List = [['line1', 'line2', 'line3'], ['line1', 'line2', 'line3'], ['line1', 'line2', 'line3', 'line4']]

我想做的是循环浏览列表并将各个行组合在一起(带有制表符间距)并打印它们。

所以是这样的:

new_line_ 1 = line1\tline1\tline1
new_line_4 = \t\tline4

因此,本质上,获取第一个列表的第一个元素并将其与第二个列表的第一个元素组合,以制表符分隔,依此类推。但是,如果一个列表大于另一个列表 - 为其他列表的缺失行添加 \t。

解决这个问题的最佳方法是什么?

我正在考虑更改前两个列表并将 \t 添加到每个元素并添加额外的 \t 以使它们与 list3 的大小相同。

但我觉得应该有更好的方法来做到这一点。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    itertools.zip_longest 成功了!

    result = itertools.zip_longest(*Final_List, fillvalue='\t')
    # result is a generator
    result = ['\t'.join(r) for r in result]
    

    【讨论】:

    • 您的输出中有一个小错误。你得到:['line1\tline1\tline1','line2\tline2\tline2','line3\tline3\tline3','\t\t\t\tline4']。最后一个选项卡太多了。 fillvalue='' 应该修复它。
    • 谢谢。这很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多