python 中两个列表的笛卡尔积[重复]
- 2025-04-10 09:46:00
- admin 原创
- 15
问题描述:
python 中两个列表的笛卡尔积
list1 = ['a', 'b']
list2 = [1, 2, 3, 4, 5]
预期输出:
list3 = ['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5']
解决方案 1:
进行列表推导,遍历两个列表并添加字符串,例如
list3 = [i+str(j) for i in list1 for j in list2]
解决方案 2:
如果您使用的是 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
版本运行得更快。
解决方案 3:
您可以使用itertools.product函数:
from itertools import product
list3 = [a+str(b) for a, b in product(list1, list2)]
解决方案 4:
如果你不熟悉列表推导,你也可以使用
list3 = []
for l in list1:
for b in list2:
list3.append(l + b)
print list3
这将做同样的事情,但使用上面的列表理解将是最好的方法
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD