Haskell中如何将两个列表的元素全量配对为元组?
实现两个列表元素的全配对(笛卡尔积)
你要的是两个列表的笛卡尔积——也就是第一个列表的每个元素和第二个列表的所有元素逐一配对,这和zip按位置配对的逻辑完全不同。下面是两种不用列表生成式的解法:
方法1:嵌套循环手动构建
直接用两层循环遍历两个列表,把每对元素组成元组后添加到结果列表中:
list1 = [1, 2] list2 = [3, 4] result = [] for x in list1: for y in list2: result.append((x, y)) print(result) # 输出: [(1, 3), (1, 4), (2, 3), (2, 4)]
方法2:使用标准库itertools.product
Python标准库itertools里的product函数专门用来生成多个可迭代对象的笛卡尔积,直接转成列表就能得到结果:
import itertools list1 = [1, 2] list2 = [3, 4] result = list(itertools.product(list1, list2)) print(result) # 输出: [(1, 3), (1, 4), (2, 3), (2, 4)]
这两种方法都不需要用到列表生成式,完全满足你的要求。
内容的提问来源于stack exchange,提问作者sandy
相关产品推荐
相关产品推荐

