Python 计算笛卡尔积
计算多个集合的笛卡尔积,有规律可循,算法和代码也不难,但是很多语言都没有提供直接计算笛卡尔积的方法,需要自己写大段大段的代码计算笛卡尔积,python 提供了一种最简单的计算笛卡称积的方法(只需要一行代码),详见下面的代码:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @file : Cartesian.py
# @author : shlian
# @date : 2018/5/29
# @version: 1.0
# @desc : 用python实现求笛卡尔积
import itertools
class cartesian(object):
def __init__(self):
self._data_list=[]
def add_data(self,data=[]):#添加生成笛卡尔积的数据列表
self._data_list.append(data)
def build(self):#计算笛卡尔积
for item in itertools.product(*self._data_list):
print(item)
if __name__=="__main__":
car=cartesian()
car.add_data([1,2,3,4])
car.add_data([5,6,7,8])
car.add_data([9,10,11,12])
car.build()
计算的结果如下:
(1,5,9)
(1,5,10)
(1,5,11)
(1,5,12)
(1,6,9)
(1,6,10)
(1,6,11)
(1,6,12)
(1,7,9)
(1,7,10)
(1,7,11)
(1,7,12)
(1,8,9)
(1,8,10)
(1,8,11)
(1,8,12)
(2,5,9)
(2,5,10)
(2,5,11)
(2,5,12)
(2,6,9)
(2,6,10)
(2,6,11)
(2,6,12)
(2,7,9)
(2,7,10)
(2,7,11)
(2,7,12)
(2,8,9)
(2,8,10)
(2,8,11)
(2,8,12)
(3,5,9)
(3,5,10)
(3,5,11)
(3,5,12)
(3,6,9)
(3,6,10)
(3,6,11)
(3,6,12)
(3,7,9)
(3,7,10)
(3,7,11)
(3,7,12)
(3,8,9)
(3,8,10)
(3,8,11)
(3,8,12)
(4,5,9)
(4,5,10)
(4,5,11)
(4,5,12)
(4,6,9)
(4,6,10)
(4,6,11)
(4,6,12)
(4,7,9)
(4,7,10)
(4,7,11)
(4,7,12)
(4,8,9)
(4,8,10)
(4,8,11)
(4,8,12)