我正在制作一个程序,该程序删除从element [2]开始的列表的每三个元素。在此for
循环快要结束时,程序会过早停止。
import random
inputrange = int(input('How many numbers do you want in the list?'))
intmax = int(input('What is the largest possible integer in the list?'))
intmin = int(input('What is the smallest possible integer in the list'))
rand = [random.randint(intmin,intmax) for i in range(inputrange)]
for i in rand:
del rand[2::3]
print(rand[2::3])
print(rand)
print(rand)
在一个以100个元素开头的列表中(仅作为示例),我在rand
中以7个元素结束。为什么?该程序应继续del rand[2::3]
,直到没有更多元素允许删除为止。给定上述100个元素,要剩余7个元素,循环应再运行4次,直到仅存在rand[0]
和rand[1]
。但是我只剩下rand[0, 6]
答案 0 :(得分:0)
我不太了解您的问题,但是我将解释您的代码会发生什么情况。
它的循环基于每次迭代中的修改后的列表,也就是说,每次都会变小。以您的列表包含14个元素的情况为例,如下所示:
app.js
在循环的第一次迭代中,i = 631,元素571,318,132,183从列表中删除,剩下以下列表。
import '../css/styles.scss';
import 'babel-polyfill';
import $ from 'jquery';
,循环i的第二次迭代将等于列表485的第二个值。通过减去以下值将删除值268、297、667:
[631, 485, 571, 268, 407, 318, 610, 297, 132, 159, 525, 183, 667,230]
i现在具有第三元素407的值。重复该过程将具有:
[631, 485, 268, 407, 610, 297, 159, 525, 667, 230]
此时,我将拥有不存在的第五个元素的值。然后关闭循环。
要解决您的问题,可以使用列表的初始大小,如下面的代码所示
[631, 485, 407, 610, 159, 525, 230]
或者我建议使用while循环:
[631, 485, 610, 159, 230]
i = 159
[631, 485, 159, 230]
希望您已解决您的疑问。谢谢。