# python3 # 步骤1 dupelms 将 ys,len(xs) - ys的每个元素扩充为len(xs)个元素 即 [10.15.3.22],len([1,2,3,4]) 4 - [10,10,10,10,15,15,15,15,3,3,3,3,22,22,22,22] dupelms lambda lst, n: reduce(lambda s, t: s t, map(lambda l, n n: [l]*n, lst)) # 步骤2 combine 计算笛卡尔积 使用map函数 将两个列表组合为元组列表 # 即 [1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4]与[10,10,10,10,15,15,15,15,3,3,3,3,22,22,22,22] - # 1 10 2 10 3 10 4 10 # 1 15 2 15 3 15 4 15 # 1 3 2 3 3 3 4 3 # 1 22 2 22 3 22 4 22 combine lambda xs, ys: map(lambda x, y: (x, y), xs*len(ys), dupelms(ys, len(xs))) # 步骤3 bigmuls,利用filter进行过滤 得到笛卡尔积大于25的结果 - # [(3, 10), (4, 10), (2, 15), (3, 15), (4, 15), (2, 22), (3, 22), (4, 22)] bigmuls lambda xs, ys: filter(lambda x: x[0] * x[1] 25, combine(xs, ys)) print(list(bigmuls([1, 2, 3, 4], [10, 15, 3, 22])))



