擅长:python、mysql、java
<p>为了调试这个,我在<code>while</code>循环中添加了两个print语句-这是我看到的:</p>
<pre><code>Cont: 0 L1 [9, 2, 6, 4, 7] L2 [3, 15, 5, 8, 12] Lmix []
Found menor 2 menorpos 1 listdec 0
Cont: 1 L1 [9, 6, 4, 7] L2 [3, 15, 5, 8, 12] Lmix [2]
Found menor 2 menorpos 1 listdec 0
Cont: 2 L1 [9, 4, 7] L2 [3, 15, 5, 8, 12] Lmix [2, 2]
Found menor 2 menorpos 1 listdec 0
Cont: 3 L1 [9, 7] L2 [3, 15, 5, 8, 12] Lmix [2, 2, 2]
Found menor 2 menorpos 1 listdec 0
Cont: 4 L1 [9] L2 [3, 15, 5, 8, 12] Lmix [2, 2, 2, 2]
Found menor 2 menorpos 1 listdec 0
Traceback (most recent call last):
File "<pyshell#30>", line 29, in <module>
del L1[menorpos]
IndexError: list assignment index out of range
</code></pre>
<p>第一次通过循环时,它可以正常工作—它在两个列表中找到最低的项,将正确的值分配给menor、menorpos和listdec,并删除该值。在</p>
<p>第二次通过循环时,它失败了,因为menor已经是最低值了-它没有找到一个更低的值,因此它从不更新menor、menorpos和listdec的值。它使用以前的值(现在不正确)。在</p>
<p>它重复使用错误的值,直到从中删除的列表太短;然后抛出一个错误。在</p>
<hr/>
<p>这个问题可以更简单地解决:</p>
^{pr2}$