3
我想以某種方式將模式匹配到表達式,以便返回所有可能的匹配。使用SymPy我可以以任意選擇的方式將我的模式與我的表情匹配。如何使用模式匹配來獲取整個集合(高達任意的重命名)SymPy中所有可能匹配的集合
目前我能做到這一點
>>> p, q = Wild('p'), Wild('q')
>>> x, y, z = symbols('x,y,z')
>>> (p+q).matches(x+y+z)
{p: y + z, q: x}
我想這樣做
>>> (p+q).allmatches(x+y+z)
{{p: x, q: y + z}, {p: y, q: x + z}, {p: z, q: x + y}}
注意,每個可能的分區被表示。 我會願意自己實現這一點。什麼是模式匹配的標準算法可以產生所有可能的匹配?
請注意,這些字典中的每個「p」和「q」的比較都不同,因爲它們有不同的「排除」。所以你需要跟蹤'p's和'q's以後訪問它們。 – asmeurer
這個解決方案將如何推廣到更復雜的表達式和更多野性的模式? – MRocklin
我不清楚更一般的表達會是什麼樣子。顯然,你可以通過直接使用子集來獲得上述內容。 – asmeurer