【问题标题】:How to append element from a multi-dimensional array to each element of another multi-dimensional array如何将多维数组中的元素附加到另一个多维数组的每个元素
【发布时间】:2021-10-04 08:38:22
【问题描述】:

我正在尝试将多维列表中的元素附加到第二个多维列表中。这是我写的代码-

my_list = [
    [["b", ["a"], "c"], ["d", ["a", "b"], "e"]],
    [["j", ["a", "f"]], ["q"]]
]

ref_list = [[["q", "w", "t"], ["y", "u"]], [["s"], ["p", "k", "l"]]]


for a, b in zip(my_list, ref_list):
    for i, subl in enumerate(a):
        for ii, v in enumerate(subl):
            if isinstance(v, list):
                subl[ii] = b[i] + subl[ii]
                break        
print(my_list)

我得到的输出是 -

[
    [["b", ["q", "w", "t", "a"], "c"], ["d", ["y", "u", "a", "b"], "e"]],
    [["j", ["s", "a", "f"]], ["p", "k", "l", "q"]]
]

它将第二个列表的元素添加到第一个列表的开头。我试图得到的输出是排序 -

[
    [["b", ["q", "a", "w", "a", "t", "a"], "c"], ["d", ["y", "a", "b", "u", "a", "b"], "e"]],
    [["j", ["s", "a", "f"]], ["p", "q", "k", "q", "l", "q"]]
]

我想在ref_list 的每个元素之后添加my_list 的inner_most 元素,而不是最后只添加一次。

【问题讨论】:

    标签: python arrays list multidimensional-array nested


    【解决方案1】:

    对您的代码稍作改动:

    for a, b in zip(my_list, ref_list):
        for i, subl in enumerate(a):
            for ii, v in enumerate(subl):
                if isinstance(v, list):
                    result = list()
                    for element in b[i]:
                        result += [element]+subl[ii]
                    subl[ii] = result
                    break
            else:
                result = list()
                for element in b[i]:
                    result += [element]+a[i]
                a[i] = result
    
    >>> my_list
    [[['b', ['q', 'a', 'w', 'a', 't', 'a'], 'c'],
      ['d', ['y', 'a', 'b', 'u', 'a', 'b'], 'e']],
     [['j', ['s', 'a', 'f']], ['p', 'q', 'k', 'q', 'l', 'q']]]
    

    【讨论】:

    【解决方案2】:
    my_list = [
        [["b", ["a"], "c"], ["d", ["a", "b"], "e"]],
        [["j", ["a", "f"]], ["q"]]
    ]
    
    ref_list = [[["q", "w", "t"], ["y", "u"]], [["s"], ["p", "k", "l"]]]
    
    
    for a, b in zip(my_list, ref_list):
        for i, subl in enumerate(a):
            for ii, v in enumerate(subl):
                if isinstance(v, list):
                    new_subl=subl[ii]
                    subl[ii]=[]
                    for j in b[i]:
                        subl[ii] +=[j] + new_subl
                    break
    

    【讨论】:

    • 这并没有给出 OP 需要的输出。您缺少 else 块。 mylist[-1] 是 [['j', ['s', 'a', 'f']], ['q']] 而不是 [['j', ['s', 'a', 'f']], ['p', 'q', 'k', 'q', 'l', 'q']]
    • 但他想添加到 inner_most 元素。到第三个元素
    • 查看预期输出。你的答案没有给出。
    • 我发布了另一个类似的问题。你能帮忙吗?这是链接 - [stackoverflow.com/questions/68567747/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多