我试图从现有列表中获取一个列表列表,该列表表示所有可能的有序对
import itertools
list_of_lists=[[0, 1, 2, 3, 4], [5], [6, 7],[8, 9],[10, 11],[12, 13],[14, 15],[16, 17],[18, 19],[20, 21],[22, 23],[24, 25],[26, 27],[28, 29],[30, 31],[32, 33],[34, 35],[36, 37],[38],[39]]
理想情况下,我们只需使用itertools.product即可获得有序对的列表
scenarios_list=list(itertools.product(*list_of_lists))
然而,如果我对一个更大的列表执行此操作,我将得到一个内存错误,因此此解决方案对于可能有许多不同的有序对集的更大列表是不可伸缩的
那么,有没有一种方法可以建立一个过程,在生成这些有序对时,我们可以迭代它们,在将列表附加到另一个列表之前,我们可以测试列表是否满足某个标准(例如,测试是否有一定数量的偶数,列表的总和不能等于最大值,等等)。如果不满足条件,则不会追加有序对,因此当我们只关心某些有序对时,不会不必要地占用内存
从
product
的递归基实现开始:现在,您可以使用一个条件来增加它,通过该条件过滤任何不满足它的
p
:现在,您可以(例如)仅限制为偶数元素:
相关问题 更多 >
编程相关推荐