Python中的itertools.product太大

Python中的itertools.product太大,python,itertools,cartesian-product,Python,Itertools,Cartesian Product,我有一个脚本如下: set=[0,1] sub=prod(set,repeat=10) subset = [item for item in sub] 其中,子集包含集合组合的10个元素 当我将repeat从10改为500时,不可能看到子集!我该如何处理那个问题 我猜它变成了公羊入侵者 这不是您正在创建的子集,它只是创建一个列表,列出产品中的所有值。一次请求所有这些值相当于运行一个从0到2**500的计数器,如果不清楚的话,这将花费大约“宇宙热死亡”的时间,即使是在低级别、接近金属语言的情况下

我有一个脚本如下:

set=[0,1]
sub=prod(set,repeat=10)
subset = [item for item in sub]
其中,子集包含集合组合的10个元素

当我将repeat从10改为500时,不可能看到子集!我该如何处理那个问题


我猜它变成了公羊入侵者

这不是您正在创建的子集,它只是创建一个
列表,列出
产品中的所有值。一次请求所有这些值相当于运行一个从0到
2**500
的计数器,如果不清楚的话,这将花费大约“宇宙热死亡”的时间,即使是在低级别、接近金属语言的情况下。写出来后,您将有3273390607896141870018969682759915221664204604306478948313680961337966404674554883270092325904157150886684127560071009217255458853930533328527589376个不同的输出

你不可能一次实现所有的价值观,更不用说一次实现所有的价值观了。如果您想查看其中一些,可以迭代
产品
,然后边走边打印:

valset = [0, 1]  # Don't name a variable set, it shadows the built-in set

for subset in prod(valset, repeat=10):
    print(subset)  # Be prepared to Ctrl-C this, it will never end on its own
或者使用
itertools.islice
提取一个可管理的数字,以
列表
通知:

first10000subsets = list(itertools.islice(prod(valset, repeat=10), 10000))

这不是您正在创建的子集,它只是创建一个
列表,列出
产品中的所有值。一次请求所有这些值相当于运行一个从0到
2**500
的计数器,如果不清楚的话,这将花费大约“宇宙热死亡”的时间,即使是在低级别、接近金属语言的情况下。写出来后,您将有3273390607896141870018969682759915221664204604306478948313680961337966404674554883270092325904157150886684127560071009217255458853930533328527589376个不同的输出

你不可能一次实现所有的价值观,更不用说一次实现所有的价值观了。如果您想查看其中一些,可以迭代
产品
,然后边走边打印:

valset = [0, 1]  # Don't name a variable set, it shadows the built-in set

for subset in prod(valset, repeat=10):
    print(subset)  # Be prepared to Ctrl-C this, it will never end on its own
或者使用
itertools.islice
提取一个可管理的数字,以
列表
通知:

first10000subsets = list(itertools.islice(prod(valset, repeat=10), 10000))

这将是长度
2^500
字节。8GB的Ram是
2^30
字节。@Urielli:
2^500
元素,如果正在计算字节,请再添加一些位。:-)@暗影游侠,对。基于
sys.getsizeoff
的长度约为
2^511
,长度约为
2^500
字节。8GB的Ram是
2^30
字节。@Urielli:
2^500
元素,如果正在计算字节,请再添加一些位。:-)@暗影游侠,对。基于
sys.getsizeoff
,大约是
2^511
。ShadowRanger谢谢。我必须检查2**500中的所有元素。但是没有办法快速完成这项工作。@YasinKÜTÜK:不,你没有。如果你认为你有,那是因为你有,并且你确信没有更好的方法来解决它。我向你们保证,要么有更好的方法解决你们的问题,要么你们的问题无法解决,就这样。世界上最快的计算机无法一个一个地计算出2**500,更不用说生成那么多的产品
元组了。这是不可能做到的。所以,找出你真正的问题是什么,并找到更好的方法来解决它。这是一个多么好的答案啊!我意识到你是绝对正确的。我刚刚面临一个XY问题。我什么都不知道。所以,我在考虑直接解决方案。为了解决这个问题,我必须找到新的解决办法。阴影游侠,谢谢。我必须检查2**500中的所有元素。但是没有办法快速完成这项工作。@YasinKÜTÜK:不,你没有。如果你认为你有,那是因为你有,并且你确信没有更好的方法来解决它。我向你们保证,要么有更好的方法解决你们的问题,要么你们的问题无法解决,就这样。世界上最快的计算机无法一个一个地计算出2**500,更不用说生成那么多的产品
元组了。这是不可能做到的。所以,找出你真正的问题是什么,并找到更好的方法来解决它。这是一个多么好的答案啊!我意识到你是绝对正确的。我刚刚面临一个XY问题。我什么都不知道。所以,我在考虑直接解决方案。为了解决这个问题,我必须找到新的解决办法。