Pythonでスペース区切り文字列を数値にキャストしつつリスト化する方法。

単にスペース区切りのString型文字列(text)をリストに変換するだけだったら、次のようにコーディングするのが普通だろう。

list = text.split()

ただ、このままだと数値計算で利用するには極めて都合が悪い(list内の要素が全部String型だから)。
そこで、どうすればsplit()した文字列リストを簡単に数値リスト化出来るか考えてみた。
それも、極力実行速度重視で。

思い付いた方法は次の2つ。

list = numpy.array(text.split()) #import numpy
list = [float(item) for item in text.split()] #List Comprehension

それぞれsplit()しただけの場合と比べてみたら、前者は約4倍、後者は約8倍の時間を要した。
実行時間だけに注目すると、List ComprehensionするのではなくNumPyを使うのが良さそう。

ちなみに、numpy.array()だとNumPyのArray型に変換されてしまうので若干気持ち悪い。
試しにlist(numpy.array(text.split()))とかやってみたんだが、これだとList Comprehensionした場合と大差無い処理速度になってしまった。
余計な事はしない方が良さそうだ。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>