Python 列表内列表与列表内其他列表的连接
我想将列表中的每个列表与列表中的其他列表连接起来。这就是我想要的:给定列表A和B,其中每个都有两个列表,我想连接A[0]+B[0],A[0]+B[1],A[1]+B[0],A[1]+B[1]。我在下面编写了一个简单的代码:Python 列表内列表与列表内其他列表的连接,python,Python,我想将列表中的每个列表与列表中的其他列表连接起来。这就是我想要的:给定列表A和B,其中每个都有两个列表,我想连接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
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],但我现在只得到[1,2,2,3]。是否有解决此问题的方法?您当前仅返回第一个结果。任何给定函数中的return语句都将返回一次,然后退出该函数。所发生的事情是,当您的代码到达那里并连接两个列表时,它将使用第一个列表并退出 您需要做的是返回所有结果的列表:
def串联(seq1,seq2):
res=[]
对于范围内的i(len(seq1)):
对于范围内的j(len(seq2)):
附件(序号1[i]+序号2[j])
返回res
这样,您将返回一个包含所有列表的值。您当前只返回第一个结果。任何给定函数中的return语句都将返回一次,然后退出该函数。所发生的事情是,当您的代码到达那里并连接两个列表时,它将使用第一个列表并退出 您需要做的是返回所有结果的列表:
def串联(seq1,seq2):
res=[]
对于范围内的i(len(seq1)):
对于范围内的j(len(seq2)):
附件(序号1[i]+序号2[j])
返回res
这样,您将返回一个包含所有列表的值。anerisgreat的答案是正确的!(这就是为什么我也投了赞成票) 我只是想对代码进行简化,使其看起来更“干净”。实际上,您不需要在列表的索引上迭代
for
循环,您可以直接使用列表的元素
def concatenate(seq1, seq2):
res = []
for i in seq1:
for j in seq2:
res.append(i + j)
return res
对不起,如果可以的话,我会将此作为评论发布,但我没有足够的声誉点数 anerisgreat的回答是正确的!(这就是为什么我也投了赞成票) 我只是想对代码进行简化,使其看起来更“干净”。实际上,您不需要在列表的索引上迭代
for
循环,您可以直接使用列表的元素
def concatenate(seq1, seq2):
res = []
for i in seq1:
for j in seq2:
res.append(i + j)
return res
对不起,如果可以的话,我会将此作为评论发布,但我没有足够的声誉点数 列表理解方法是:
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]]
清单理解方法是:
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]]
[[1,2],[3,4]]
与[[2,3],[4,5]]
的笛卡尔积给出([1,2],[2,3])
,([1,2],[4,5])
,([3,4],[2,3]),([3,4,5])
。然后你只需要在每个输出对中加入列表。[[1,2],[3,4]]
与[[2,3],[4,5]
的笛卡尔积给出([1,2],[2,3])
,([1,2],[4,5])
,([3,4],[2,3]),([3,4,5])
。然后,您只需要在每个输出对中加入列表。