特定の文字列で重複するすべてのn長の部分文字列のリストを生成しようとしています。
たとえば、n6
と文字列の場合"hereismystring"
、リストを生成します["hereis", "ereism", "reismy", ..., "string"]
。私が今使用している簡単なコードは次のようになります。
n = 6
l = len(string)
substrings = [string[i:(i + n)] for i in xrange(l - n + 1)]
簡単です。問題は、これを高速化したいということです(非常に長い文字列が非常にたくさんあります)。Pythonにもっと速いテクニックはありますか?Pythonの文字列ルーチンがとにかくCであるとすると、Cythonにドロップダウンすることはまったく役に立ちますか?
参考までに、このテクニックは、私のマシン(新しいMacbook Pro)で500usの長さの文字列と30のnに対して約100usかかります。
よろしくお願いします!