<p>首先,这需要一些mod来重现您的错误:</p>
<pre><code>from itertools import combinations #### Added ####
runen1 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 43, 47, 107, 109]
kek = list(combinations(runen1, 2))
zero = 0
null = 0
while(zero < len(kek)):
jayjay = str(kek[null]) #### Added ####
jayjay1 = jayjay.replace(',', '')
jayjay1 = jayjay.replace("'", '')
jayjay1 = jayjay.replace('(', '')
jayjay1 = jayjay.replace(')', '')
jayjay1 = jayjay.replace(' ', '')
newlist = []
newlist.append(jayjay)
del kek[null]
null = null +1
print(newlist)
</code></pre>
<p>经过这些修改后,我得到:</p>
<pre><code>Traceback (most recent call last):
File "stacktest.py", line 7, in <module>
jayjay = str(kek[null]) #### Added ####
IndexError: list index out of range
</code></pre>
<p>你为什么越界?好吧,您正在访问<code>kek[null]</code>,但是<code>while</code>循环正在检查的条件是<code>zero < len(kek)</code>。这些不一样。你知道吗</p>
<p>其次,您几乎从不需要在Python中使用索引。它不像C,索引是完成迭代的唯一方法。如果要迭代,可以执行以下操作:</p>
<pre><code>for item in kek:
print(item)
# or do more complex things with item
</code></pre>
<p>第三,您不想在循环期间重新初始化<code>newlist = []</code>。把它放在圈外。你知道吗</p>
<p>第四,不要对正在迭代的内容调用<code>del</code>。你知道吗</p>
<p>第五,不需要<code>jayjay1</code>,只需在适当的地方修改<code>jayjay</code>。你知道吗</p>
<p>综合起来:</p>
<pre><code>from itertools import combinations
runen1 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 43, 47, 107, 109]
kek = list(combinations(runen1, 2))
newlist = []
for jayjay_tuple in kek:
jayjay = str(jayjay_tuple)
jayjay = jayjay.replace(',', '')
jayjay = jayjay.replace("'", '')
jayjay = jayjay.replace('(', '')
jayjay = jayjay.replace(')', '')
jayjay = jayjay.replace(' ', '')
newlist.append(jayjay)
print(newlist)
</code></pre>
<p>这与您的(原始)代码很接近,如果您增加了组合的数量,它也会起作用。你知道吗</p>
<p>如果你对编程很认真的话,学会调试是一项非常宝贵的技能。我强烈建议您阅读<a href="https://ericlippert.com/2014/03/05/how-to-debug-small-programs/" rel="nofollow noreferrer">https://ericlippert.com/2014/03/05/how-to-debug-small-programs/</a>,并学习使用<code>pdb</code>(<code>import pdb; pdb.set_trace()</code>)。错误会不断出现,而且你不想每次都发邮件。你知道吗</p>
<p>嗯。你知道吗</p>