擅长:python、mysql、java
<p>当您掌握了以上初学者友好解决方案的窍门后,请考虑看一下<a href="https://docs.python.org/2/library/bisect.html#other-examples" rel="nofollow noreferrer">bisect</a>。在</p>
<p>您可以通过对链接示例进行一些语义修改来解决您的问题。在</p>
<pre><code>from bisect import bisect
def grade(score, breakpoints=[2, 2.1, 2.25, 2.5], marks='abcde'):
i = bisect(breakpoints, score)
return marks[i]
a,b,c,d,e = [], [], [] ,[], []
lists = [a,b,c,d,e]
marks='abcde'
r = map(lambda x: x / 10.0, range(0, 501, 1))
for item in [(grade(score),score) for score in r ]:
l = marks.index(item[0])
lists[l].append(item[1])
</code></pre>
<p><code>grade()</code>,对于一个给定的数字,它会问,如果要在断点中插入它,它将在哪个索引处运行?它将返回marks[index]。例如,如果给它一个分数1,它将计算出1属于2之前断点的索引0,因此它将返回marks[0]=a</p>
<p>print语句将为您提供一个元组列表,其中包含(字母mark,mark分配给的值)。在</p>
<p>就像我说的,这是更先进的,你应该在掌握了基本概念之后再去理解它,但是值得一看,让你的思想稍微弯曲一下。在</p>