列表内的列表与列表内的其他列表的串联

时间:2019-10-16 04:59:04

标签: python

我想将列表中的每个列表与列表中的其他列表连接在一起。这就是我想要的:给定列表A和B,每个列表中都有2个列表,我想将A [0] + B [0],A [0] + B [1],A [1] + B [ 0],A [1] + B [1]。我在下面写了一个简单的代码:

def concatenate(seq1, seq2):
    for i in range(len(seq1)):
        for j in range(len(seq2)):
            return seq1[i] + seq2[j]

当我将[[1,2],[3,4]],[[2,3],[4,5]]用作参数时,我想要[[1,2,2,3],结果是[1,2,4,5],[3,4,2,3],[3,4,4,5]],但我只得到[1,2,2,3]时刻。有解决此问题的方法吗?

3 个答案:

答案 0 :(得分:1)

您当前仅返回第一个结果。任何给定函数中的return语句将返回一次,然后退出该函数。发生的事情是,当您的代码到达那里并合并两个列表时,它需要第一个列表并退出。

您需要做的是返回所有结果的列表:

def concatenate(seq1, seq2):
    res = []
    for i in range(len(seq1)):
        for j in range(len(seq2)):
            res.append(seq1[i] + seq2[j])
    return res

这样,您将返回一个包含所有列表的值。

答案 1 :(得分:1)

anerisgreat的答案是正确的! (这就是为什么我也投票赞成)

我只是想对代码进行简化,使其看起来更“干净”。实际上,您不需要迭代列表的索引上的for循环,可以直接使用列表的元素!

def concatenate(seq1, seq2):
    res = []
    for i in seq1:
        for j in seq2:
            res.append(i + j)
    return res

对不起,如果可以的话,我会将其发布为评论,但我的信誉度不足!

答案 2 :(得分:0)

列表理解方法为:

seq1 = [[1,2],[3,4]]
seq2 = [[2,3],[4,5]]

res = [(seq1[i] + seq2[j])  for i in range(len(seq1)) for j in range(len(seq2))]

res
> [[1, 2, 2, 3], [1, 2, 4, 5], [3, 4, 2, 3], [3, 4, 4, 5]]