【发布时间】:2012-06-19 22:48:52
【问题描述】:
我经常使用多维数组,其数组索引是从复杂的用户指定的集合中生成的。
我正在寻找一个库,其中包含用于表示具有任意数量的索引和任意复杂谓词的复杂集合的类。给定一个集合描述,期望的输出将是一个生成器。该生成器将依次生成与多维数组索引相对应的dicts 或tuples。
这样的库存在吗?
示例
假设我们有以下用户指定的集合(在set-builder notation 中),它表示某个数组变量x[i][j] 的索引:
{i 在 1..100, j 在 1..50: i >= 20, j >= 21, 2*(i + j)
我想将其放入某种惰性类(可能是生成器表达式)中,这将允许我惰性地评估集合的元素以生成我的数组的索引。假设这个类被称为lazyset;这将是期望的行为:
>>> S = lazyset("{i in 1..100, j in 1..50: i >= 20, j >= 21, 2*(i+j) <= 100}")
>>> S
<generator object <genexpr> at 0x1f3e7d0>
>>> next(S)
{'i': 20, 'j': 21}
>>> next(S)
{'i': 20, 'j': 22}
我想我可以自己使用生成器表达式,但这似乎是一个已解决的问题。所以我想我会问是否有人遇到过处理这个问题的成熟图书馆(至少在某种程度上)。有这样的图书馆吗?
【问题讨论】:
-
看看 scipy 和 sympy。
标签: python data-structures set generator lazy-sequences