Python 计划笛卡尔积

Python 计划笛卡尔积

笛卡尔乘积是指在数学中,两个汇合X和Y的笛卡尔积(Cartesian product),又称直积,表白为X × Y,第一个东西是X的分子而第二个东西是Y的一切大概无序对的个中一个分子.

假如汇合A={a, b},汇合B={0, 1, 2},则两个汇合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

一致的例子有,即使A表白某书院弟子的汇合,B表白该书院一切课程的汇合,则A与B的笛卡尔积表白一切大概的选课情景。A表白一切音位的汇合,B表白一切韵母的汇合,那么A和B的笛卡尔积就为一切大概的中国字全拼。

设A,B为汇合,用A中元素为第一元素,B中元素为第二元素形成无序对,一切如许的无序对构成的汇合叫作A与B的笛卡尔积,记作AxB.

笛卡尔积的标记化为:

A×B={(x,y)|x∈A∧y∈B}

比方,A={a,b}, B={0,1,2},则

A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}

B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}

计划多个汇合的笛卡尔积,有顺序可循,算法和代码也不难,然而很多谈话都没有供给径直计划笛卡尔积的本领,须要本人写大段大段的代码计划笛卡尔积,python 供给了一种最大略的计划笛卡称积的本领(只须要一条龙代码),详见底下的代码:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

# @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)

分享到 :

Leave a Reply

Your email address will not be published. Required fields are marked *