【发布时间】:2017-09-25 04:11:21
【问题描述】:
marks = [90, 25, 67, 45, 80]
a = marks
print(marks.count(a>=60))
我想看看有多少学生的分数超过了 60
【问题讨论】:
-
"marks over 60" 表示
a > 60,而不是a >= 60,包含在内。
标签: python
marks = [90, 25, 67, 45, 80]
a = marks
print(marks.count(a>=60))
我想看看有多少学生的分数超过了 60
【问题讨论】:
a > 60,而不是a >= 60,包含在内。
标签: python
你可以这样做:
In [6]: sum(x >= 60 for x in marks)
Out[6]: 3
【讨论】:
您可以使用filter 仅包含您关心的标记:
marks = [90, 25, 67, 45, 80]
print(len(filter(lambda x: x>=60, marks)))
【讨论】:
60 分以上有多少?
>>> 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
【讨论】:
【讨论】:
237,你还需要在Python 3中导入functools.reduce。这应该是一个很大的提示,reduce()不再受青睐。将 filter() 与 lambda 组合,然后将 reduce() 组合起来效率低下,并且比等效的列表理解或使用 sum() 的可读性差。