1からPythonを学ぶスレ
■ このスレッドは過去ログ倉庫に格納されています
0360デフォルトの名無しさん
NGNGdef permute(n):
if n == 0:
return [[0]]
return [p[:i]+[n]+p[i:] for i in range(n+1) for p in permute(n-1)]
にしたら大分高速になりました.
2.4 の generator expression を使って,generator を返させるとこうなります.
def permutec(n):
if n == 0:
return [[0]]
return (p[:i]+[n]+p[i:] for i in range(n+1) for p in permutec(n-1))
g = permutec(6)
while True:
try:
print g.next()
except:
break
これだと generator を返すので,permute(10000000) とかやっても一瞬.
あと,>>351 のコードを2.4a1 で実行したら
TypeError: list objects are unhashable
になった.なぜだろう.
■ このスレッドは過去ログ倉庫に格納されています