Python中两个列表的笛卡尔积
list1 = ['a', 'b']
list2 = [1, 2, 3, 4, 5]
预期输出:
list3 = ['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5']
Python中两个列表的笛卡尔积
list1 = ['a', 'b']
list2 = [1, 2, 3, 4, 5]
预期输出:
list3 = ['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5']
做一个列表推导式,遍历这两个列表并将字符串相加,像这样:
list3 = [i+str(j) for i in list1 for j in list2]
list3 = [f'{a}{b}' for a in list1 for b in list2]
我非常喜欢这种符号表示法,因为它非常易读,并且与笛卡尔积的定义相匹配。
如果你想要更复杂的代码,你可以使用 itertools.product
:
import itertools
list3 = [f'{a}{b}' for a, b in itertools.product(list1, list2)]
itertools
版本运行得更快。from itertools import product
list3 = [a+str(b) for a, b in product(list1, list2)]
list3 = []
for l in list1:
for b in list2:
list3.append(l + b)
print list3