Python-元素明智字符串串联的双循环

时间:2018-10-13 21:11:33

标签: python string concatenation elementwise-operations

我的问题很简单:

我有A = ['AA','BB']B = ['CC','DD']

我如何获得AB = ['AACC','AADD','BBCC',BBDD']

谢谢!

3 个答案:

答案 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 aAA and BB分别为j in bCC 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']