擅长:python、mysql、java
<p>如果您的输入序列没有任何重复的值,这可能比<code>dropwhile</code>前进{<cd2>}快,因为它不需要您通过计算正确的点来比较所有被删除的值来继续迭代。在</p>
<pre><code>from itertools import product, islice
from operator import mul
def resume_product(state, *sequences):
start = 0
seqlens = map(len, sequences)
if any(len(set(seq)) != seqlen for seq, seqlen in zip(sequences, seqlens)):
raise ValueError("One of your sequences contains duplicate values")
current = end = reduce(mul, seqlens)
for i, seq, seqlen in zip(state, sequences, seqlens):
current /= seqlen
start += seq.index(i) * current
return islice(product(*sequences), start + 1, end)
seqs = '01', '23', '45', '678'
# if I want to resume after '1247':
for i in resume_product('1247', *seqs):
# blah blah
pass
</code></pre>