【发布时间】:2017-08-04 13:06:53
【问题描述】:
我已经阅读了几个关于这个主题的问题,但我找不到我的具体问题的好答案。
我有清单:
l = [0.25, 0.875, 0.7, 0.175, 0.6, 0.55, 0.525]
我必须编写一个返回整数列表作为结果的方法,即分别为 A 分数、B 分数和 C 分数的数目。 A 分数是至少 60% 的分数,C 分数是严格低于 50% 的分数。其他分数均为B分。
所以,我们需要创建的列表是:
[3, 2, 2]
我已尝试使用此代码:
a = 0
b = 0
c = 0
for i in l:
if i>=0.6:
a+=1
elif i<0.5:
c+=1
else:
b+=1
return [a,b,c]
有谁知道这个问题是否有更好的解决方案?
【问题讨论】:
-
修复您的方法的快速“hack”将是
[sum(1 for i in l if i > 0.6)],但您需要针对每个条件执行此操作,这将提高效率(多次遍历列表)。最好使用简单、明确的for循环。 -
您能否对列表进行排序,或者您是否有一个更大的列表,排序效率会很低?
-
在我看来,“最短”的解决方案很少是最好的。我属于更喜欢可读性的组。
标签: python arrays python-3.x list