从另一个矩阵添加n个额外的列

时间:2019-02-11 18:39:40

标签: python list

我有以下两个矩阵:

alias s='git remote -v && git status'

我需要创建三个矩阵B的A + 1列,依此类推

所以我需要这个最终结果:

A = [[2, 7, 3, 6], [3, 3, 4, 4], [6, 9, 5, 3], [4, 2, 1, 7]]
B = [[2, 6, 3, 5], [-1, 2, -3, 1], [2, -5, 7, 3]]

我开始执行以下代码,但是我只有其中之一

A1 = [[2, 7, 3, 6, 2], [3, 3, 4, 4, 6], [6, 9, 5, 3, 3], [4, 2, 1, 7, 5]]
A2 = [[2, 7, 3, 6, -1], [3, 3, 4, 4, 2], [6, 9, 5, 3, -3], [4, 2, 1, 7, 7]]
A3 = [[2, 7, 3, 6, 2], [3, 3, 4, 4, -5], [6, 9, 5, 3, 7], [4, 2, 1, 7, 3]]

输出:

for j in range(len(B)):    
    for i in range(j):
        b = B[j][i]
        A = [x + [b] for x in A]
    print(A)

以退出代码0结束的过程

3 个答案:

答案 0 :(得分:0)

您可以利用enumerate()来获取输出:

A = [[2, 7, 3, 6], [3, 3, 4, 4], [6, 9, 5, 3], [4, 2, 1, 7]]
B = [[2, 6, 3, 5], [-1, 2, -3, 1], [2, -5, 7, 3]]

AA ={}
for idx,inner in enumerate(B):

    # add to each a from A the k-th elem of your inner
    AA[f"A{idx}"] = [a +[inner[k]] for k,a in enumerate(A)]

print(AA) # stored the lists into a dict


{'A0': [[2, 7, 3, 6, 2], [3, 3, 4, 4, 6], [6, 9, 5, 3, 3], [4, 2, 1, 7, 5]], 
 'A1': [[2, 7, 3, 6, -1], [3, 3, 4, 4, 2], [6, 9, 5, 3, -3], [4, 2, 1, 7, 1]], 
 'A2': [[2, 7, 3, 6, 2], [3, 3, 4, 4, -5], [6, 9, 5, 3, 7], [4, 2, 1, 7, 3]]}

根据个人喜好,我尽量避免使用range(len(...))-enumerate更干净。


如果字符串文字不适合您,请改用"A{}".format(idx)


您的代码无效,因为您将ij的范围耦合了

for j in range(len(B)):     # j starts as 0,1,2  
    for i in range(j):      # i is doing nothing, 0, 0+1  <-- wrong

答案 1 :(得分:0)

这是一个可能的解决方案,您当然可以从以下开始:

k = len(A)
D = []
for i in range(len(B)):
    D.append([])
    for j in range(len(A)):
        C = A[j][:k]
        C.append(B[i][j])
        D[i].append(C)

答案 2 :(得分:-1)

请确保使用Deepcopy,以免它们都指向同一对象。

A = [[2, 7, 3, 6], [3, 3, 4, 4], [6, 9, 5, 3], [4, 2, 1, 7]]
B = [[2, 6, 3, 5], [-1, 2, -3, 1], [2, -5, 7, 3]]

from copy import deepcopy
A_list = [deepcopy(A) for i in range(3)]

for outer_idx, list_in_b in enumerate(B):
    for inner_idx, value in enumerate(list_in_b):
        A_list[outer_idx][inner_idx].append(value)

print(A_list)

# Output:
#[[[2, 7, 3, 6, 2], [3, 3, 4, 4, 6], [6, 9, 5, 3, 3], [4, 2, 1, 7, 5]],
# [[2, 7, 3, 6, -1], [3, 3, 4, 4, 2], [6, 9, 5, 3, -3], [4, 2, 1, 7, 1]],
# [[2, 7, 3, 6, 2], [3, 3, 4, 4, -5], [6, 9, 5, 3, 7], [4, 2, 1, 7, 3]]]