Python实现三个字符串数组的笛卡尔积运算
实现三个数组的笛卡尔积并拼接字符串
给定三个字符串数组:
a = ['M', 'K', 'J']b = ['B', 'C', 'D', 'T','A']d = ['A','B','C','Z']
需要生成所有从三个数组各取一个元素拼接成的字符串(比如用a的'M'、d的'A'和b的每个元素组合得到MBA、MCA等),以下是两种Python实现方式:
方法1:使用itertools.product(简洁高效)
itertools.product可以直接生成多个可迭代对象的笛卡尔积,再通过字符串拼接得到结果:
import itertools a = ['M', 'K', 'J'] b = ['B', 'C', 'D', 'T','A'] d = ['A','B','C','Z'] # 按a元素 → d元素 → b元素的顺序拼接,对应示例格式 result = [''.join((elem_a, elem_d, elem_b)) for elem_a, elem_b, elem_d in itertools.product(a, b, d)] # 输出所有组合 for combo in result: print(combo)
方法2:嵌套循环(基础逻辑直观)
如果不想依赖标准库,可以用三层嵌套循环遍历所有元素组合:
a = ['M', 'K', 'J'] b = ['B', 'C', 'D', 'T','A'] d = ['A','B','C','Z'] result = [] for elem_a in a: for elem_d in d: for elem_b in b: result.append(elem_a + elem_d + elem_b) # 输出所有组合 for combo in result: print(combo)
两种方法最终都会生成60种组合(3×5×4=60),完全覆盖所有可能的元素拼接结果。若需要调整元素拼接顺序,只需修改字符串拼接时的元素顺序即可。
内容的提问来源于stack exchange,提问作者hamdy emad
相关产品推荐
相关产品推荐

