【问题标题】:Append some columns to a list of list matrix将一些列附加到列表矩阵列表
【发布时间】:2013-04-19 13:16:39
【问题描述】:

我在将两个列表合并为一个时遇到了一些麻烦。我认为有一个简单的解决方案,但我被困了几个小时。

我的两个列表例如:

a=[['1','2'],['3','4']]
b=[['5','6'],['7','8']]

而我试图得到的是:

c=[['1','2','5','6'],['3','4','7','8']]

但我不知道列表有多少行和列。

我尝试使用 zip 命令,但它产生了如下内容:

[(['1','2'],['5','6']),(['3','4'],['7','8'])]

非常感谢您在这个问题上的任何帮助!!!

也许像How can I add an additional row and column to an array? 这样的东西会起作用,但我想有一个更简单的解决方案。

【问题讨论】:

  • 任何特定的编程语言?
  • 哦,对不起,我在用 python 写。感谢您的快速答复! @leppie 你能帮我确定确切的格式吗?我无法让它工作。
  • @MatthiasLa:对不起,我根本不懂 python;p 我的答案是 Scheme。 (但那些看起来像向量/数组,而不是列表,但是,我根本不知道 python)
  • @leppie:谢谢,感谢您的帮助!此外,我认为在AddColumn 中描述了与我的问题非常相似的内容。但我认为必须有一种更简单的方法来拆分每一行。

标签: python list append


【解决方案1】:
>>> a=[['1','2'],['3','4']]
>>> b=[['5','6'],['7','8']]
>>> [x + y for x, y in zip(a, b)]
[['1', '2', '5', '6'], ['3', '4', '7', '8']]

【讨论】:

  • ...哇,原来这么简单。在这里,我使用了所有这些疯狂的功能,而你只是出现了这个。 +1 给你。
  • 非常感谢 - 看起来真的很棒。
【解决方案2】:
[sum(ai_bi, []) for ai_bi in zip(a, b)]

扩展到 n 个列表:

L = (a, b, ...)
[sum(el, []) for el in zip(*L)]

【讨论】:

  • 是的,如果您要添加 2 个项目,只需使用 +(这里不需要 sum)
【解决方案3】:

如果两个列表的长度相同,您可以使用一个简单的循环:

listone = [['1','2'],['3','4']]
listtwo = [['5','6'],['7','8']]
newlist = []

for i in range(0, len(data)):
    newlist.append(listone[i] + listtwo[i])

print(newlist)
[['1','2','5','6'],['3','4','7','8']]

【讨论】:

    【解决方案4】:

    如果您的列表长度相同:

    c = []
    for idx in range(len(a)):
        c.append(a[idx]+b[idx])
    

    虽然不是很优雅。

    【讨论】:

    • 问题是我处理包含大量行和列的大列表。所以我不能在需要处理每个元素的地方使用这些方法。不过还是谢谢。
    • 如果你把它扔进一个循环?
    • 我试过 `a=[['1'],['2']] b=[['3'],['4']] c=[] for i in range( len(a)): c[i] = [a[i] + b[i]] ` 但它给了我'列表分配索引超出范围'
    • 非常感谢,帮了大忙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多