els*_*nwx 4 python python-itertools
我想处理一个非常大的itertools.product对象.问题是这样的:
import string
from itertools import product
text = string.lowercase[:] + string.uppercase[:] + '0123456789'
items = product(text, repeat=5)
for item in items:
#do something
Run Code Online (Sandbox Code Playgroud)
我知道它items的长度是62**5.如果我要处理的元素items,其索引范围从300000到600000,如何实现这一目标?
我试图将其转换itertools.product为python列表,如下所示:
items = list(product(text, repeat=5))[300000:600000+1]
for item in items:
#do something
Run Code Online (Sandbox Code Playgroud)
但似乎转换消耗了大量的内存,因为我已经等了很长时间才进行这种转换,最后放弃了.
我有这个需求,因为我想在python gevent中做这件事,所以我想把itertool.productgevent生成的大到小切片.
你可以islice用来做这件事.
from itertools import product, islice
import string
text = string.ascii_letters + string.digits
for item in islice(product(text,repeat=5), 300000, 600000):
# do something
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
524 次 |
| 最近记录: |