我的问题很简单:
我有A = ['AA','BB']
,B = ['CC','DD']
我如何获得AB = ['AACC','AADD','BBCC',BBDD']
?
谢谢!
答案 0 :(得分:2)
您可以使用itertools.product
:
>>> from itertools import product
>>> A = ['AA','BB']
>>> B = ['CC','DD']
>>> AB = [''.join(p) for p in product(A, B)]
>>> AB
['AACC', 'AADD', 'BBCC', 'BBDD']
这样做的好处是可以处理任意数量的可迭代对象。
答案 1 :(得分:2)
更容易看到完整循环中发生的事情,这里我们将采用i in a
和AA and BB
分别为j in b
和CC and DD
。在我们的第一次迭代中,我们将前两个AA + CC
组合在一起,然后将append
组合到我们的新列表中,接下来出现AA + DD
然后到BB
上,然后重复该过程。
a = ['AA','BB']
b = ['CC','DD']
res = []
for i in a:
for j in b:
x = i + j
res.append(x)
print(res)
# ['AACC', 'AADD', 'BBCC', 'BBDD']
理解了这一点之后,您可以跳过该过程,并通过列表理解来完成它,这是完全相同的。
res = [i + j for i in a for j in b]
答案 2 :(得分:1)
具有列表理解:
AB = [x + y for x in A for y in B]
因此,我们遍历A
中的元素,并为x
中的每个元素A
遍历B
,然后将x + y
添加到列表。
或者对于各种数量的列表,并使用生成器:
from itertools import product
map(''.join, product(A, B))
这可以很容易地扩展为可变数量的元素,例如:
>>> A = ['AA','BB']; B = ['CC','DD']; C = ['EE', 'FF']
>>> list(map(''.join, product(A, B, C)))
['AACCEE', 'AACCFF', 'AADDEE', 'AADDFF', 'BBCCEE', 'BBCCFF', 'BBDDEE', 'BBDDFF']