pythonの文字列は不変であり、不変のシーケンスをスプライシングすると新しいシーケンスオブジェクトが生成されるため、スプライシング時の速度は遅くなります。
つまり、スプライシングプロセス中に多くの中間オブジェクトが生成されます。新しいオブジェクトを作成するには間違いなく時間がかかり、これは明らかにメモリを浪費します。
最適化された方法は、代わりに.join()を使用することです
実験コードは次のとおりです。
import time
import numpy as np
ls=['AA_'+str(i) for i in range(10000000)]
s=""
st=time.time()
for i in ls:
s+=i
print(time.time()-st)
#print(s)
s=""
st=time.time()
s=s.join(ls)
#print(s)
print(time.time()-st)
動作結果:
0.9245333671569824
0.08815383911132812
この結果から、ダイレクトスプライシングの速度は10倍以上遅くなることがわかりますので、ストリングをスプライシングする際には注意が必要です。