Python双循环用于元素字符串连接

2024-10-06 12:39:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题很简单:

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

如何获得AB = ['AACC','AADD','BBCC',BBDD']?你知道吗

谢谢你!你知道吗


Tags: abddaaccbbbbccaaccaadd
3条回答

使用列表理解:

AB = [x + y for x in A for y in B]

因此,我们迭代A中的元素,对于A中的每个元素x,我们迭代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']

更容易看到在一个完整的循环中发生了什么,这里我们将取i in a,它将是AA and BBj 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]

您可以使用^{}

>>> from itertools import product
>>> A = ['AA','BB']
>>> B = ['CC','DD']
>>> AB = [''.join(p) for p in product(A, B)]
>>> AB
['AACC', 'AADD', 'BBCC', 'BBDD']

这样做的好处是可以处理任意数量的iterables。你知道吗

相关问题 更多 >