当前位置: 移动技术网 > IT编程>开发语言>.net > 笛卡尔积(评估表达式实现)

笛卡尔积(评估表达式实现)

2020年07月07日  | 移动技术网IT编程  | 我要评论

A×B=(<x,y>xAyB) A \times B = \left( <x,y> | x \in A ∧ y \in B \right)

考虑到递归也好,还是别的方法,没办法在效率方面达到一个比较好的均衡,于是用推符号语句然后评估表达式的方式实现了这样的笛卡尔积

A = list(range(4))
B = [chr(i) for i in range(65,65+4)]
A,B

在这里插入图片描述

def productExpr(*D,typekey='python'):
    m = len(D)
    symbol_index = {i:chr(i) for i in range(97,97+m)}
    symbol1 = "".join(["{}{}{}{}{}".format(" for " ,symbol_index[i]," in D[" ,i-97,"] ") for i in symbol_index])
    symbol2 = "".join(["{}{}".format(",",symbol_index[i]) for i in symbol_index])[1:]
    temp_expression = "{}{}{}{}{}{}".format("{","(",symbol2,")",symbol1,"}").replace("D",str(D))
    if typekey == "numpy": 
        expression = "{}{}{}".format("np.array(list(",temp_expression,"))")
    elif typekey == "python":
        expression = temp_expression
    expr = eval(expression)
    return expr

python set结构
在这里插入图片描述
numpy 结构
在这里插入图片描述

本文地址:https://blog.csdn.net/weixin_43069769/article/details/107158272

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网