笛卡尔积判断Python实现

笛卡尔积的生成和判断,其实就是把两个集合里的所有元素配对一遍——组合出所有的有序对。听起来挺数学,但实现起来直观。Python 和 C# 这两个语言里操作都不复杂,循环嵌套走一遍就能搞定。

两个集合的所有配对,其实就是所谓的笛卡尔积。你要做的就是把集合 A 的每个元素和集合 B 的每个元素配起来,用编程语言去模拟这个过程。像 Python 里直接一个列表推导就搞定了:

def cartesian_product(A, B):
    return [(a, b) for a in A for b in B]

运行下试试,输出就是一堆形如 (1, 'x') 的元组,直观又清晰。比较适合调试逻辑或者前期原型测试。

如果你在用 Visual Studio,那可以用 C# 实现一个类似的逻辑,代码也不复杂:

public static List> ComputeCartesianProduct(List A, List B)
{
    var result = new List>();
    foreach (var a in A)
    {
        foreach (var b in B)
        {
            result.Add(Tuple.Create(a, b));
        }
    }
    return result;
}

控制台输出一把,立马就能看到效果。适合做一些组合生成关系匹配类的判断任务。

你要是做更复杂的判断,比如某个对是否在笛卡尔积中,或者两个集合的积是不是一致,就加个 Contains 或者 Set.Equals 判断一下就行。

哦对了,如果你对离散数学感兴趣,也可以看看离散数学课后答案更新Kotlin Discrete Math Toolkit,扩展一下思路还挺有。

如果你平时写算法或者搞一些数据关系的,这个笛卡尔积的判断思路可以顺手收着,用得上的场景还挺多。

zip
Discrete Mathematics Cartesian product .zip 预估大小:32个文件
folder
笛卡尔乘积 文件夹
file
笛卡尔乘积.suo 13KB
file
笛卡尔乘积.sln 910B
folder
debug 文件夹
folder
笛卡尔乘积.ilk 文件夹
file
笛卡尔乘积.exe 72KB
file
笛卡尔乘积.pdb 203KB
file
笛卡尔乘积.ncb 9.63MB
folder
笛卡尔乘积 文件夹
file
AssemblyInfo.cpp 1KB
file
stdafx.cpp 141B
file
app.ico 1KB
file
stdafx.h 155B
file
笛卡尔乘积.cpp 396B
file
笛卡尔乘积.vcproj.HP-201102171353.Administrator.user 1KB
file
app.aps 18KB
file
笛卡尔乘积.vcproj.Adol-Talent.Adol.user 1KB
file
笛卡尔乘积.vcproj.PC2011082820TLE.Administrator.user 1KB
file
笛卡尔乘积.vcproj 6KB
file
app.rc 2KB
file
resource.h 91B
file
Form1.resx 43KB
file
Form1.h 23KB
folder
Debug 文件夹
file
app.res 1KB
file
笛卡尔乘积.pch 3.13MB
file
AssemblyInfo.obj 5KB
file
stdafx.obj 12KB
file
笛卡尔乘积.exe.intermediate.manifest 385B
file
BuildLog.htm 5KB
file
笛卡尔乘积.Form1.resources 25KB
file
mt.dep 67B
file
笛卡尔乘积.obj 45KB
file
vc80.pdb 92KB
file
vc80.idb 35KB
file
ReadMe.txt 989B
zip 文件大小:3.14MB