Python中两个列表的笛卡尔积
list1 = ['a', 'b']
list2 = [1, 2, 3, 4, 5]
预期输出:
list3 = ['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5']
答案 0 :(得分:5)
进行列表理解,遍历两个列表并添加字符串,例如
list3 = [i+str(j) for i in list1 for j in list2]
答案 1 :(得分:1)
您可以使用itertools.product函数:
from itertools import product
list3 = [a+str(b) for a, b in product(list1, list2)]
答案 2 :(得分:0)
如果您不熟悉列表理解,还可以使用
list3 = []
for l in list1:
for b in list2:
list3.append(l + b)
print list3
这将做同样的事情,但是从上面使用列表理解将是最好的方法
答案 3 :(得分:0)
如果您使用的是Python 3.6+,则可以按以下方式使用f字符串:
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
版本运行得快。