【问题标题】:python join lists to include full array even if columns are blankpython加入列表以包含完整数组,即使列是空白的
【发布时间】:2017-02-05 19:53:56
【问题描述】:

我要加入两个列表。

ListA
['5', 'h', 'k', '9', 'a', 'd', 'b']
ListB
[['x', 'y', 'z'], ['a', 'b', 'c'], ['5', 'g', 'd'], ['w', '7', 'k']]

我得到的结果是:

ListC
[['5', 'h', 'k', '9', 'a', 'd', 'b'], ['x', 'y', 'z'], ['a', 'b', 'c'], ['5', 'g', 'd'], ['w', '7', 'k']]

我想创建一个 5 行 x 7 列的完整数组,如下所示。

ListC
[['5', 'h', 'k', '9', 'a', 'd', 'b'], ['x', 'y', 'z','','','',''], ['a', 'b', 'c','','','',''], ['5', 'g', 'd','','','',''], ['w', '7', 'k','','','','']]

如果可能的话,我想在不安装 lambda 的情况下这样做,但如果有必要我会这样做。

提前致谢。我当前的代码:

ListA = []
ListB = []
ListC = []

import csv
with open('List1.csv', newline='')as file1:
    reader1 = csv.reader(file1)
    for rowOfCells in reader1:
        ListA.append(rowOfCells)      
with open('List2.csv', newline='')as file2:
    reader2 = csv.reader(file2)
    for rowOfCells in reader2:
        ListB.append(rowOfCells)

ListC = ListA + ListB

print (ListC)

with open("ListC",'w', newline= '') as outFile:
    wr = csv.writer(outFile, dialect='excel')
    wr.writerows(ListC)

【问题讨论】:

  • “空列”、空字符串是什么意思?
  • 请包括预期的输出。从你的问题看不清楚。尤其是五行的由来。我对您的问题的最佳解释是 4 x 7。
  • 对不起,伙计们,我是新手。我想要以下内容。当我尝试访问第一行之后的第 3-6 列时出现超出范围错误。 ['5', 'h', 'k', '9', 'a', 'd', 'b'] ['x', 'y', 'z','','','' ,''] ['a', 'b', 'c','','','',''] ['5', 'g', 'd','','','' ,''] ['w', '7', 'k','','','','']
  • 我正在寻找一种方法来加入两个列表,从而为我提供完整的数组。任一列表的最大列数 x 任一列表的最大行数。我想填充当前具有空字符串的单元格。我这样做的方式是没有创建单元格。它不是一个完全矩形的阵列。谢谢
  • 我有点困惑。 CSV 编写器需要一个嵌套列表:最外面的列表是数据集,然后嵌套在其中的列表代表一行。根本不需要用空字符串填充任何行以使行对齐。编辑:我们同时发表了评论。 writerows(注意末尾的 s)真的会导致它错位吗?

标签: python list join


【解决方案1】:
>>> ListC = [['5', 'h', 'k', '9', 'a', 'd', 'b'], ['x', 'y', 'z'], ['a', 'b', 'c'], ['5', 'g', 'd'], ['w', '7', 'k']]
>>> ListC = [(e + [''] * (len(max(ListC, key=len)) - len(e))) for e in ListC]
>>> print ListC
[['5', 'h', 'k', '9', 'a', 'd', 'b'], ['x', 'y', 'z', '', '', '', ''], ['a', 'b', 'c', '', '', '', ''], ['5', 'g', 'd', '', '', '', ''], ['w', '7', 'k', '', '', '', '']]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多