2024-10-06 12:39:33 发布
网友
我的问题很简单:
我有A = ['AA','BB'],B = ['CC','DD']
A = ['AA','BB']
B = ['CC','DD']
如何获得AB = ['AACC','AADD','BBCC',BBDD']?你知道吗
AB = ['AACC','AADD','BBCC',BBDD']
谢谢你!你知道吗
使用列表理解:
AB = [x + y for x in A for y in B]
因此,我们迭代A中的元素,对于A中的每个元素x,我们迭代B,然后将x + y添加到列表中。你知道吗
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 BB和j in b,它将是CC and DD。在我们的第一次迭代中,我们将前两个AA + CC然后append组合到我们的新列表中,下一个是AA + DD然后再到BB并且这个过程重复。你知道吗
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]
您可以使用^{}:
>>> 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。你知道吗
使用列表理解:
因此,我们迭代
A
中的元素,对于A
中的每个元素x
,我们迭代B
,然后将x + y
添加到列表中。你知道吗或者对于可变数量的列表,使用生成器:
这可以很容易地扩展到可变数量的元素,例如:
更容易看到在一个完整的循环中发生了什么,这里我们将取
i in a
,它将是AA and BB
和j in b
,它将是CC and DD
。在我们的第一次迭代中,我们将前两个AA + CC
然后append
组合到我们的新列表中,下一个是AA + DD
然后再到BB
并且这个过程重复。你知道吗当你明白这一点后,你可以跳过这个过程,用列表理解来做,这是相同的。你知道吗
您可以使用^{} :
这样做的好处是可以处理任意数量的iterables。你知道吗
相关问题 更多 >
编程相关推荐