我想将列表中的每个列表与列表中的其他列表连接在一起。这就是我想要的:给定列表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]时刻。有解决此问题的方法吗?
答案 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]]