Python に 2 つの文字列 (数字のみ) があるとします。たとえば、文字列 a と文字列 b です。数値 c = ab (したがって、整数部分と b 小数部分) を生成する最速の方法は何ですか?
質問する
4119 次
4 に答える
4
速度の面でより速いという意味である場合、私の使用法では次のことをお勧めします。
float("%s.%s"% ("12", "345"))
timeit の結果:
>>> timeit.Timer('float("%s.%s"% ("12", "245"))').timeit()
0.39421987533569336
>>> timeit.Timer('float("{0}.{1}".format("12", "245"))').timeit()
0.573634147644043
于 2012-04-24T18:56:51.693 に答える
3
プリミティブ フォーマット (最速でしょうか?):float(str(a) + '.' + str(b))
このソリューションでは、フォーマット文字列を解析する必要はありません。
[不信者への回答として追加]
>>> timeit.Timer('float("%s.%s"% ("12", "245"))').timeit()
1.147318164738806
>>> timeit.Timer('float("{0}.{1}".format("12", "245"))').timeit()
1.5033958226534452
>>> timeit.Timer('float("12" + "." + "245")').timeit()
0.6646503955111598
%s
説明の一部は、int 引数に対してもいつでも記述できるということかもしれません。% または 経由でフォーマットする場合、余分な文字列変換が行われる可能性があり.format()
ます。
于 2012-04-24T18:57:50.870 に答える
1
とを使用float
しformat
ます。
>>> a, b = '12', '345'
>>> float('{0}.{1}'.format(a, b))
12.345
編集:これが最速であると主張することはできませんが(他のソリューションで速度をテストしていないため)、仕事は完了します。
于 2012-04-24T18:50:51.497 に答える
0
これにより、整数に変換できないValueError
かどうa
かb
が発生します(たとえば、数字だけではない場合)。
float('%d.%d' % (int(a), int(b)))
(Python 2.7 でテスト済み)
于 2012-04-24T18:53:57.310 に答える