用Python計算笛卡爾積

2021-08-20 08:26:32 字數 1965 閱讀 5009

計算多個集合的笛卡爾積,有規律可循,演算法和**也不難,但是很多語言都沒有提供直接計算笛卡爾積的方法,需要自己寫大段大段的**計算笛卡爾積,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=): #新增生成笛卡爾積的資料列表

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)

所以,使用python有的時候還是很方便的。

避免笛卡爾積

在mysql中建立臨時表 create table temptable 2 instanceid numeric 30 celltype varchar 128 enodeb id numeric 30 eutrancell id numeric 30 engine myisam default c...

js笛卡爾積

可以用來模擬路徑,或者標籤的順序。笛卡兒積組合 function descartes list var result var pindex null var tempcount 0 var temp 根據引數列生成指標物件 for var index in list pindex index 單維度...

笛卡爾積 LintCode

我們採用二維陣列setlist表示集合陣列,其中setlist i 中的每個元素都為整數,且不相同。求集合setlist 0 setlist 1 setlist setlist.length 1 的笛卡爾積。一般地,集合a和集合b的笛卡爾積a b 注意事項 1 setlist.length 5 1 ...