我是在現代化的一些遺留代碼,當我偶然到以下行的中間:什麼是將奇數舍入到偶數的最佳方式?
rounded_val = (len(src_string)/2) * 2
它是什麼做的,它正在採取的Python's weird integer division優勢,圓字符串的長度值,如果奇數,則以之前的第一個偶數值爲。但是整數除法即將在Python 3中改變,我需要改變這一行。起初我以爲這:
rounded_val = len(src_string) if len(src_string)%2 == 0 else len(src_string)-1
但調用len()
3倍。然後我想到了使用最初的想法,但與地板分區運營商//
,並認爲它可能不那麼兼容,這樣做,我應該使用math.floor()
而不是(然後我需要有另一個導入math
)。
我可能會反思這個,但最佳方式在Python中做到這一點?
PS:輸出需要是一個整數。
你想奇數整數還是舍入? –
倒了,這是在問題。 –
你知道他們怎麼說*過早優化是萬惡之源?*你的問題中的「慢」函數和選定答案之間的差異是0.1 *微秒*。即使您連續執行了一百萬次這些計算,性能差異也只有100毫秒。所選的答案很聰明,但如果你的同事有可能不瞭解位數學,那麼使用更明確的地板劃分算子。 P.S.不要說「這看起來更快」 - 證明它。 Python有一個專用於此的[timeit]模塊(http://docs.python.org/2/library/timeit.html)。 – nemec