如何使用itertools从两个列表生成指定组合?
解决方法:使用
itertools.product生成笛卡尔积 你之前用itertools.combinations没得到想要的结果,是因为这个函数的作用是从单个可迭代对象中选取指定长度的不重复元素组合,而你需要的是两个列表之间的笛卡尔积——也就是第一个列表的每个元素和第二个列表的每个元素逐一配对,itertools.product()正好就是干这个的!
具体实现代码
import itertools list_a = [1, 2, 3] list_b = [4, 5, 6] resulting_list = [list(pair) for pair in itertools.product(list_a, list_b)] print(resulting_list)
代码说明
itertools.product(list_a, list_b)会返回一个迭代器,其中的每个元素是list_a和list_b元素的配对元组(比如(1,4)、(1,5))- 我们用列表推导式把每个元组转换成列表,就得到了你想要的格式:
[[1,4],[1,5],[1,6],[2,4],[2,5],[2,6],[3,4],[3,5],[3,6]]
如果你不需要转换成列表,直接用元组的话,也可以简化成list(itertools.product(list_a, list_b)),不过这样得到的是元组的列表,和你想要的格式只差一步类型转换~
内容的提问来源于stack exchange,提问作者user32882
相关产品推荐
相关产品推荐

