如何合并不同列表中的元素

时间:2019-06-19 15:22:17

标签: python

我正在尝试使用以下代码在两个列表之间组合元素。

输入以下内容:

nested_array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

我希望得到以下输出:

[[1, 4, 5, 6], [2, 4, 5, 6], [3, 4, 5, 6], [1, 7, 8, 9], ... [6, 7, 8, 9]]

我尝试使用以下内容,但似乎并没有以我想要的格式输出。

可以帮忙吗?

def unique_combination(nested_array):
    try:
        for n1, array in enumerate(nested_array):
            for element in array:
                a = [element], list(nested_array[n1+1])
                print(a)
    except IndexError:
        pass

此外,我尝试不使用print(),而是尝试使用操作return。 但是使用操作return时,它仅返回一个输出。 我编码正确吗?

2 个答案:

答案 0 :(得分:0)

在不知道所需的完整输出的情况下,它看起来像是您想要的东西。请注意,可以使用列表理解功能将其写成一行,但这很讨厌。

nested_array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for list_index in range(len(nested_array) - 1):
    for marcher_index in range(list_index + 1, len(nested_array)):
        for ele in nested_array[list_index]:
            print([ele] + nested_array[marcher_index])

输出:

[1, 4, 5, 6]
[2, 4, 5, 6]
[3, 4, 5, 6]
[1, 7, 8, 9]
[2, 7, 8, 9]
[3, 7, 8, 9]
[4, 7, 8, 9]
[5, 7, 8, 9]
[6, 7, 8, 9]

答案 1 :(得分:0)

尝试一下:

flatten_list = lambda ls: [item for sublist in ls for item in sublist]

nested_array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
unique_combination = [[i]+nested_array[j]  for j in range(1,len(nested_array)) 
                                           for i in flatten_list(nested_array[:j])]
print(unique_combination)

输出

[[1, 4, 5, 6],
 [2, 4, 5, 6],
 [3, 4, 5, 6],
 [1, 7, 8, 9],
 [2, 7, 8, 9],
 [3, 7, 8, 9],
 [4, 7, 8, 9],
 [5, 7, 8, 9],
 [6, 7, 8, 9]]