Python 計算列表數值乘積結果末尾 0 的個數

2021-09-24 18:46:46 字數 1986 閱讀 4003

在網上看到這麼一道題目,根據自己當時的想法編寫**,雖然成功實現了,但是我們可以從更多的思維角度來分析。

思路 1:

判斷 2 和 5 的個數,取當中的最小值。因為 2*5 等於 10,所以只要計算得出它們的個數最小值,就可以知道乘積結果末尾 0 的個數。

import timeit

l = [5, 8, 3, 50, 35, 230,234000,3445,7994,3444]

def get_list_zero4():

global l

num2 = 0

num5 = 0

for num in l:

while num % 2 == 0:

num = num / 2

num2 += 1

while num % 5 == 0:

num = num / 5

num5 += 1

return min(num2,num5)

if __name__ == '__main__':

tt4 = timeit.repeat("get_list_zero4()", setup="from __main__ import get_list_zero4", number=10000)

print(min(tt4))

輸出結果為:

0.04166272500000012
思路2:

計算列表中末尾是 5 和 0 的個數。

import timeit

l = [5, 8, 3, 50, 35, 230,234000,3445,7994,3444]

def get_list_zero5():

global l

def func(n):

count = 0

while n%10 == 0:

count += 1

n /= 10 #python2

# n = n // 10 #python3

if n%5 == 0:

count += 1

return count

sums = 0

for x in l:

sums += func(x)

return sums

if __name__ == '__main__':

tt5 = timeit.repeat("get_list_zero5()", setup="from __main__ import get_list_zero5", number=10000)

print(min(tt5))

輸出結果為:

0.02896810400000005
思路3:

將列表中的數值計算完後判斷末尾 0 的個數。

import timeit

l = [5, 8, 3, 50, 35, 230,234000,3445,7994,3444]

def get_list_zero3():

global l

return len(str(reduce(lambda x, y:x * y, l))[::-1]) - len(str(int(str(reduce(lambda x, y:x * y, l))[::-1])))

if __name__ == '__main__':

tt3 = timeit.repeat("get_list_zero3()", setup="from __main__ import get_list_zero3", number=10000)

print(min(tt3))

輸出結果為:

0.031752234000000046
雖然該方法執行時間也短,但是沒有完全按照題目的意思。

python 數值列表 75

for value in range 1,5 print value 這裡的意思是從1列印到4.所以如果想要從1列印到5,則必須是range 1,6 如何儲存range 的值?這裡可以使用list 函式 numbers list range 1,6 print numbers 輸出結果 1,2,3,...

Python 基礎 數值列表

在前面所提的章節中,我們所提及的大多是列表中的字串的操作,那麼接下來將詳細介紹數值列表的建立和使用。數值列表即存放了一株相關的數值型元素的列表,那麼如將這一組資料放入數值列表中呢?lunm input 請輸入乙個人數值列表 請輸入乙個數值列表 1 2,3 4,5 6 lnum 1,2,3,4,5,6...

說說 Python 的數值列表

range 函式可以生成一系列的數字 for v in range 1,10 print v 複製 執行結果 range 函式會從我們所指定的第乙個值開始數,直到到達所指定的第二個值後停止,但不會包含第二個值。這就是程式語言中的差一行為。可以使用函式 list 將 range 函式的結果轉換為列表 ...