我经常使用多维数组,其数组索引是从复杂的用户指定的集合中生成的。
我正在寻找一个库,其中包含用于表示具有任意数量索引和任意复杂谓词的复杂集合的类。给定一个集合描述,期望的输出将是一个生成器。该生成器将依次生成对应于多维数组索引的dict
s 或s。tuple
有这样的图书馆吗?
例子
假设我们有以下用户指定的集合(在set-builder notation 中),它表示某个数组变量的索引x[i][j]
:
{i 在 1..100, j 在 1..50: i >= 20, j >= 21, 2*(i + j) <= 100}
我想将它放入某种惰性类(可能是生成器表达式)中,这将允许我惰性地评估集合的元素以生成我的数组的索引。假设这个类被调用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}
我想我可以使用生成器表达式自己动手,但这似乎是一个已解决的问题。所以我想我会问是否有人遇到过处理这个问题的成熟图书馆(至少在某种程度上)。有这样的图书馆吗?