多个集合计算笛卡尔积-Python

什么是笛卡尔积?

引用百度百科的解释:笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。

例如:集合A={1,2},集合B={3,4},AB集合的笛卡尔积={13,14,23,24}

两个集合的笛卡尔积

两个集合的笛卡尔积比较好计算,两个for循环搞定,代码如下:

def two(list1, list2):
    res_list = []
    for str1 in list1:
        for str2 in list2:
            res_list.append(str1 + ' ' + str2)
    return res_list

多个集合的笛卡尔积

例如,已知集合A, B, C

计算笛卡尔积:先计算AB的笛卡尔积,AB的笛卡尔积是一个集合设为D,那么ABC的笛卡尔积其实就是D和C的笛卡尔积,N个集合的计算方式同理。

以下代码为多个集合的笛卡尔积:

#coding-=utf-8

list1 = ['1', ''''2']
list2 = ['4', '5']
list3 = ['7', '8']
list4 = ['9', '0']
list_of_list = [list1, list2, list3, list4]

def two(list1, list2):
    res_list = []
    for str1 in list1:
        for str2 in list2:
            res_list.append(str1 + ' ' + str2)
    return res_list

def process(list_of_list):
    res_list = []
    list1 = list_of_list[0]
    for tmp_list in list_of_list[1:]:
        list2 = tmp_list
        two_res_list = two(list1, list2)
        list1 = two_res_list
    return list1

print process(list_of_list)

转载于:https://www.cnblogs.com/zhangkl/p/8604449.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值