我有这样的问题。我有两个列表,A和B,其中A=[[1,2],[3,4],[5,6]]
和B=[["a","b"],["c","d"]]
,我希望从这两个列表中获得一个新列表
C = [
[[1,2],["a","b"]],
[[3,4],["a","b"]],
[[1,2],["c","d"]],
[[3,4],["c","d"]]
]
我尝试了以下代码:
A = [[1,2],[3,4]]
B=[["a","b"],["c","d"]]
for each in A:
for evey in B:
print each.append(evey)
但是,输出为None。
感谢任何有用的信息。谢谢。
顺便说一下,我试图替换"追加"用简单的" +"。输出是一个列表,其中的元素不是列表。
答案 0 :(得分:2)
这回答:Get the cartesian product of a series of lists?
试试这个:
import itertools
A = [[1,2],[3,4]]
B = [["a","b"],["c","d"]]
C = []
for element in itertools.product(A,B):
C.append(list(element))
print C
答案 1 :(得分:1)
这是一种方法:
A = [[1,2],[3,4]]
B=[["a","b"],["c","d"]]
C = zip(A,B)
这里的输出是一个元组列表:
[([[1, 2], [3, 4]],), ([['a', 'b'], ['c', 'd']],)]
如果您需要列表列表,可以执行以下操作:
D = [list(i) for i in zip(A, B)]
输出:
[[[1, 2], ['a', 'b']], [[3, 4], ['c', 'd']]]
答案 2 :(得分:0)
试试这个。您必须在每次迭代中追加每个元素。
result = []
for each in A:
for evey in B:
result.append([each,evey])
>>>result
[[[1, 2], ['a', 'b']],
[[1, 2], ['c', 'd']],
[[3, 4], ['a', 'b']],
[[3, 4], ['c', 'd']]]
或强>
即可>>>from itertools import product
>>>list(product(A,B))
[([1, 2], ['a', 'b']),
([1, 2], ['c', 'd']),
([3, 4], ['a', 'b']),
([3, 4], ['c', 'd'])]
答案 3 :(得分:0)
不要打印append()的返回值,试试这个:
A = [[1,2],[3,4]]
B=[["a","b"],["c","d"]]
C = []
for each in B:
for evey in A:
C.append([evey, each])
print C
答案 4 :(得分:0)
您可以使用check here for more information来实现此目的。
import itertools
list(itertools.product(A,B)) # gives the desired result
[([1, 2], ['a', 'b']),
([1, 2], ['c', 'd']),
([3, 4], ['a', 'b']),
([3, 4], ['c', 'd']),
([5, 6], ['a', 'b']),
([5, 6], ['c', 'd'])]
itertools.product(* iterables [,repeat])
它返回输入迭代的笛卡尔乘积
的例如强>
product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy