0

Python に 2 つの文字列 (数字のみ) があるとします。たとえば、文字列 a と文字列 b です。数値 c = ab (したがって、整数部分と b 小数部分) を生成する最速の方法は何ですか?

4

4 に答える 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

とを使用floatformatます。

>>> a, b = '12', '345'
>>> float('{0}.{1}'.format(a, b))
12.345

編集:これが最速であると主張することはできませんが(他のソリューションで速度をテストしていないため)、仕事は完了します。

于 2012-04-24T18:50:51.497 に答える
0

これにより、整数に変換できないValueErrorかどうabが発生します(たとえば、数字だけではない場合)。

float('%d.%d' % (int(a), int(b)))

(Python 2.7 でテスト済み)

于 2012-04-24T18:53:57.310 に答える