2017-09-25 59 views

回答

1

多少分數?

>>> marks = [90, 25, 67, 45, 80] 
>>> len([score for score in marks if score > 60]) 
3 

這將使用列表理解來創建一個僅包含超過60分者一個新的列表,然後將新的列表的長度會告訴你有很多的得分上面有60

另一種常見的方法是使用sum()

>>> sum(1 if score > 60 else 0 for score in marks) 
3 

你也可以採取的事實,即布爾是整數:

>>> sum(score > 60 for score in marks) 
3 

或者,更好的理解,使用for循環:

count = 0 

for score in marks: 
    if score > 60: 
     count += 1 

print count 
2

你可以這樣做:

In [6]: sum(x >= 60 for x in marks) 
Out[6]: 3 
1

我希望這個人能也有幫助。

這裏我們使用filter函數獲取大於或等於60的元素,然後使用len函數得到no。的元素。

Try this code snippet here

marks = [90, 25, 67, 45, 80] 
print(len(filter(lambda x: x>=60,marks))) 
+0

downvote背後的原因對我有幫助。誰降低了? –

+0

除了此代碼打印'237'之外,還需要在Python 3中導入'functools.reduce'。這應該是'reduce()'不再受青睞的一個大提示。將'filter()'與'lambda'然後'reduce()'結合起來效率低下,並且與等價的列表理解或通過使用sum()相比可讀性差。 – mhawke

1

您可以使用filter只包括您所關心的標記: 「超過60標誌」

marks = [90, 25, 67, 45, 80] 
print(len(filter(lambda x: x>=60, marks)))