例如,假設我們調用函數countPositive([1,2,3]),它將返回一個3.或如果我們有數組[-1,0,1],則有一個正數,所以函數將返回1.等等,等等。在Python中編寫一個返回大於零的數組數的計數函數
回答
def countPositive(nums):
return len(filter(lambda x: x > 0, nums))
某些timeit結果(上一個新的MacBook Air瓦特/ 1.8 I7,4場演出,以及CPython的2.7):
filter
+ len
:
$ python -m timeit "l = [-1, 0, 1] * 100; len(filter(lambda x: x > 0, l))"
10000 loops, best of 3: 49.9 usec per loop
$ python -m timeit "l = [-1, 0, 1] * 1000; len(filter(lambda x: x > 0, l))"
1000 loops, best of 3: 476 usec per loop
$ python -m timeit "l = [-1, 0, 1] * 10000; len(filter(lambda x: x > 0, l))"
100 loops, best of 3: 4.86 msec per loop
sum
(由hochl推薦) :
$ python -m timeit "l = [1, 2, 3] * 100; sum(1 for x in l if x > 0)"
10000 loops, best of 3: 35.1 usec per loop
$ python -m timeit "l = [1, 2, 3] * 1000; sum(1 for x in l if x > 0)"
1000 loops, best of 3: 336 usec per loop
$ python -m timeit "l = [1, 2, 3] * 10000; sum(1 for x in l if x > 0)"
100 loops, best of 3: 3.4 msec per loop
所以sum
版本稍快,但我認爲len
+ filter
更具可讀性。
哦,夥計,我非常親密。謝謝! – helloimbarbara
這兩個測試中的列表是不同的,[-1,0,1]與[1,2,3] – Federico
def countPositive(nums):
return sum(1 for x in nums if x > 0)
的確我們有相同的想法;-)我一開始沒有注意到你的,我會刪除我的併發送一個upvote你的方式。 –
嘿,爲什麼刪除你的......都是有效的。我也贊成你的:-) – hochl
非常感謝,但善良知道我已經有足夠的代表了,國際海事組織沒有太多的意見有兩個單獨的答案,它們說完全相同的事情:-P –
greaterThanZero = 0
for i in array:
if i > 0:
greaterThanZero += 1
return greaterThanZero
'爲我在範圍array.length:'?你的意思是'我在陣列中'? – glglgl
這正是我的意思。謝謝。 – SetSlapShot
你可以這樣做:
def countPositive(array):
count=0
for i in array:
if i>0:
count = count +1
return count
爲什麼是負面投票?也許他不想使用最複雜的功能,特別是如果他提出這樣的問題! – lc2817
我沒有倒下任何東西,其他人也沒有倒下。我不是他,我是她。 – helloimbarbara
好的,對不起 – lc2817
奇怪的是,名單理解是最快的:
$ python -m timeit "l = [-1, 0, 1] * 10000; len([n for n in l if n > 0])"
1000 loops, best of 3: 1.1 msec per loop
使用金額:(慢)
$ python -m timeit "l = [-1, 0, 1] * 10000; sum(1 for x in l if x > 0)"
1000 loops, best of 3: 1.3 msec per loop
使用過濾器:(最慢)
$ python -m timeit "l = [-1, 0, 1] * 10000; len(filter(lambda x: x > 0, l))"
100 loops, best of 3: 2.89 msec per loop
reduce(lambda x,y: x+int(y>0),[1, 2, 1, 4,5],0)
這個工程太:
function countMoreThanZero(a):
for i in a:
if i > 0:
sum += 1
return sum
如果你不想使用lambda
from operator import lt
from functools import partial
def count_positive(nums):
return len(filter(partial(lt, 0), nums))
應該是更快,因爲它避免了lambda。
- 1. 編寫一個函數,返回給定數組中的零個數?
- 2. 返回零數組在Python
- 3. 如何編寫一個返回另一個函數的函數?
- 4. 如何編寫一個函數,該函數返回數組y中數組x的值索引數組?
- 5. 的Python - 寫的函數來計算,並返回一個圓
- 6. 編寫返回另一個函數
- 7. 編寫一個返回函數=> T
- 8. 如何設計一個返回一個oid數組的函數
- 9. 編寫一個計算數組中完美總和的函數?
- 10. 如何編寫一個返回一組行的postgres函數?
- 11. f2py,Python函數,返回一個數組(向量值函數)
- 12. python pygobject和返回數組的函數
- 13. 如何編寫一個計算python總點數的函數?
- 14. 寫一個存儲函數返回一個rowid數組
- 15. python函數返回第一個非零帶中間零並返回數字串的最後一部分
- 16. 函數在Python中返回一個NoneType?
- 17. C++ Lambdas:函數返回一個函數,返回一個函數...?
- 18. 函數返回一個函數,返回一個函數等
- 19. 爲什麼randn函數返回一個大於1的數字?
- 20. 從Python中的函數返回函數
- 21. 函數返回排序數組中重複數的計數
- 22. FORTRAN77函數返回一個數組
- 23. 從C++函數返回一個數組
- 24. .forEach()Javascript函數返回一個數組?
- 25. 函數返回一個數組
- 26. VLOOKUP返回一個小函數數組
- 27. 從C函數返回一個數組
- 28. 函數返回一個空數組
- 29. 如何寫一個函數返回一個返回類型的子函數
- 30. 返回數組的函數
到目前爲止你試過了什麼? –
這是一個非常簡單的問題。您可以通過使用GOogle獲得訂單! – IcyFlame