Python: 遍历列表时列表索引超出范围 [using del]

Python: list index out of range while iterating over a list [using del]

我在尝试遍历此列表时遇到了以下问题。列表中删除了一个参数,但迭代的停止点是相同的。我试图在代码末尾添加 n-1 但这没有任何区别。

我还是个新手,所以任何解释或帮助将不胜感激。

string_intrare = [['Gheorghe', 'Gita', '8', '7', '5.5', '10'],
['Vuia', 'Vasile', '4', '10', '10', '10'],
['Andreescu', 'Andra', '9', '10', '9', '10'],
['Elenescu', 'Elena', '5', '5', '5', '5']]
n = 4


for i in range(0,n):
    if (float(string_intrare[i][2]) < 5) or (float(string_intrare[i][3]) < 5) or (float(string_intrare[i][4]) < 5) or (float(string_intrare[i][5]) < 5):
        del string_intrare[i]
        print('List ' + str(i) + ' has been removed remove' + ' ===== Grade lower than 5')

Traceback (most recent call last):
  File ".\note_bacalaureat.py", line 16, in <module>
    if (float(string_intrare[i][2]) < 5) or (float(string_intrare[i][3]) < 5) or (float(string_intrare[i][4]) < 5) or (float(string_intrare[i][5]) < 5):
IndexError: list index out of range

发生这种情况是因为如果 'if' 条件的计算结果为真,其中一个列表项将被删除并且列表的大小现在减少了但 n 仍然相同并且 for 循环继续迭代n次。

使其工作的一种可能方法是:

string_intrare = [['Gheorghe', 'Gita', '8', '7', '5.5', '10'],['Vuia', 'Vasile', '4', '10', '10', '10'],['Andreescu', 'Andra', '9', '10', '9', '10'],['Elenescu', 'Elena', '5', '5', '5', '5']]
n = 4


for i in string_intrare:
    if (float(i[2]) < 5) or (float(i[3]) < 5) or (float(i[4]) < 5) or (float(i[5]) < 5):
        print('List ' ,i , ' has been removed remove' , ' ===== Grade lower than 5')
        string_intrare.remove(i)