020ReviewmidPython / SymPy真实来源改编 SymPy

SymPy partitions:避免迭代结果共享可变字典

审查一个 SymPy iterator PR:作者在 partitions() 返回分区字典时复制结果,避免收集列表后被后续迭代改写。

ai-pr.diffdiff · 18 lines
diff --git a/sympy/utilities/iterables.py b/sympy/utilities/iterables.py@@     if size:         yield sum(ms.values()), ms     else:-        yield ms+        yield ms.copy()@@         if size:             yield sum(ms.values()), ms         else:-            yield ms+            yield ms.copy()@@+def test_partitions_size_values():+    result = list(partitions(6, k=2, size=True))+    assert [size for size, _ in result] == [3, 4, 5, 6]