Python用itertools.product创建一个列表?

tij*_*jko 8 python python-itertools

我正在从范围列表中创建一个包含itertools的列表,到目前为止我有这个:

start_list = [xrange(0,201,1),xrange(0,201,2),xrange(0,201,5),xrange(0,201,10),xrange(0,201,20),xrange(0,201,50),xrange(0,201,100),xrange(0,201,200)]
Run Code Online (Sandbox Code Playgroud)

现在,我知道如果我试图运行下一行,它将杀死我的python解释器:

next_list = list(itertools.product(*start_list))
Run Code Online (Sandbox Code Playgroud)

我想知道的是,是否有可能引入一个参数来检查每个元组,它的项目总和只有在等于一定数量时才将它们放入next_list中

也许是这样的:

next_list = list(itertools.product(*start_list,sum(tuples)=200))
Run Code Online (Sandbox Code Playgroud)

我知道这是不对的,我可能需要开始重新思考我的方式.start_list在生成器中的范围是否太多而无法构建另一个列表?

Joh*_*ooy 14

最好只使用列表理解

new_list = [item for item in itertools.product(*start_list) if sum(item) == 200]
Run Code Online (Sandbox Code Playgroud)