【发布时间】:2013-05-18 23:51:41
【问题描述】:
我可以得到这样的整数排列:
myInt = 123456789
l = itertools.permutations(str(myInt))
[int(''.join(x)) for x in l]
有没有更有效的方法在 Python 中获得 integer 排列,跳过创建字符串的开销,然后加入生成的元组?计时,元组加入过程使这比list(l) 长 3 倍。
添加支持信息
myInt =123456789
def v1(i): #timeit gives 258ms
l = itertools.permutations(str(i))
return [int(''.join(x)) for x in l]
def v2(i): #timeit gives 48ms
l = itertools.permutations(str(i))
return list(l)
def v3(i): #timeit gives 106 ms
l = itertools.permutations(str(i))
return [''.join(x) for x in l]
【问题讨论】:
-
我澄清了,比'list(l)'更长
-
我冒昧地发布了一些 timeit 结果来帮助澄清 OP 的问题
标签: python integer permutation itertools