擅长:python、mysql、java
<p>这个嵌套循环可以向<code>list</code>添加任意多的元素(顺便说一句,这对于列表来说是个坏名字,因为它覆盖了内置函数<code>list()</code>):</p>
<pre><code> while len(list) <= 2:
for element in array:
if element == max(array):
list.append(element)
array.remove(element)
</code></pre>
<p>您只检查外循环中<code>list</code>的长度,但内循环遍历整个数组,并可能在再次检查该条件之前将它们全部添加到<code>list</code>(如果数组按相反顺序排序)</p>
<p>编写此函数的一种更简单的方法是简单地对其进行排序并获取最高的三个元素:</p>
<pre><code>from typing import List
def find_three_largest_numbers(array: List[int]) -> List[int]:
"""Return the three largest numbers from the array."""
return sorted(array)[-3:]
</code></pre>
<p>(编辑)不涉及排序的稍微复杂的版本:</p>
<pre><code>def find_three_largest_numbers(array: List[int]) -> List[int]:
"""Return the three largest numbers from the array."""
largest_3: List[int] = []
for num in array:
largest_3.append(num)
if len(largest_3) > 3:
largest_3.remove(min(largest_3))
return largest_3
</code></pre>
<p>在这个实现中,<code>largest_3</code>永远不允许增长超过3个元素,因为每次增长到4个元素时,我们在添加更多元素之前只删除一个元素</p>