在 python 中,我有以下置换生成的实现:
def perms(v):
'''
Generates permutations for sequence v
:param v: sequence for permutations
'''
if not v:
yield ()
else:
for p in perms(v[1:]):
for i in range(len(v)):
yield p[:i] + (v[0],) + p[i:]
它比 itertools.permutations 工作得更快(我知道它也做得更少)。是否有更快(或者更紧凑)的实现。我尝试用向量插入/删除来实现它,它似乎更慢。