<每日一題>題目19:簡單的程序執行效率面試題
阿新 • • 發佈:2019-02-13
sorted 最長 面試 imp () nds 面試題 div seconds
# 將下面的函數按照執行效率高低排序。它們都接受由0至1之間的數字構成的列表作為輸入。這個列表可以很長。一個輸入列表的示例如下:[random.random() for i in range(100000)]。你如何證明自己的答案是正確的。 def f1(lIn): l1 = sorted(lIn) l2 = [i for i in l1 if i<0.5] return [i*i for i in l2] def f2(lIn): l1 = [i for i in lIn if i<0.5] l2 = sorted(l1) return [i*i for i in l2] def f3(lIn): l1 = [i*i for i in lIn] l2 = sorted(l1) return [i for i in l1 if i<(0.5*0.5)] ‘‘‘ 先篩選肯定用時最短f2用時最短,f3最後才篩選用時最長(這點不太準確,算是猜的),執行效率的順序是f2>f1>f3 f1和f3的效率需要準確的計算才能確定結果 ‘‘‘ import random import cProfile lIn = [random.random() for i in range(100000)] cProfile.run(‘f1(lIn)‘)# 7 function calls in 0.041 seconds cProfile.run(‘f2(lIn)‘)# 7 function calls in 0.022 seconds cProfile.run(‘f3(lIn)‘)# 7 function calls in 0.047 seconds
<每日一題>題目19:簡單的程序執行效率面試題