IndexError: list index out of range when if len(listx[i]) > n

IndexError: list index out of range when if len(listx[i]) > n

如果我的问题太基础,我提前道歉。我也试图在以前的帖子中找到答案,但它们并不是我要找的。

我正在为这个练习而苦恼:

编写一个程序,逐一分析单词列表的所有元素(例如 示例:['Jean'、'Maximilien'、'Brigitte'、'Sonia'、'Jean-Pierre'、'Sandra']) 生成两个新列表。一个将包含少于 6 个字符的单词, 另一种是6个字符以上的单词。

liste1 = ['Jean', 'Maximilien', 'Brigitte', 'Sonia', 'Jean-Pierre', 'Sandra']

moins6 = []
plus6 = []
i = 0 

while i <= 13 :
    
    if len(liste1[i]) > 6: 
        moins6.append(liste1[i])
        
    else:
        plus6.append(liste1[i])
    
    i +=1 

我收到错误“IndexError:列表索引超出范围”

你能建议我正确的写法吗(while循环)

非常感谢

liste1 = ['Jean', 'Maximilien', 'Brigitte', 'Sonia', 'Jean-Pierre', 'Sandra']

moins6 = []
plus6 = []

for word in liste1:
    if len(word) > 6:
        moins6.append(word)
    else: plus6.append(word)
print(moins6)
print(plus6)

输出:

['Maximilien', 'Brigitte', 'Jean-Pierre']
['Jean', 'Sonia', 'Sandra']

根据您的代码,您的 i 值将从 0 变为 13

而您的输入列表中只有 6 个元素

所以你的 i 值应该从 0 到 5

如果您不知道输入大小,可以使用 len() 来查找

liste1 = ['Jean', 'Maximilien', 'Brigitte', 'Sonia', 'Jean-Pierre', 'Sandra']

moins6 = []
plus6 = []
i = 0 

while i < len(liste1) : # here is your error
    
    if len(liste1[i]) > 6: 
        moins6.append(liste1[i])
        
    else:
        plus6.append(liste1[i])
    
    i +=1 
print(liste1, moins6, plus6)
['Jean', 'Maximilien', 'Brigitte', 'Sonia', 'Jean-Pierre', 'Sandra'] 
['Maximilien', 'Brigitte', 'Jean-Pierre'] 
['Jean', 'Sonia', 'Sandra']

您可以遍历列表,找到每个元素的 len,并将其追加到适当的列表中:

liste1 = ['Jean', 'Maximilien', 'Brigitte', 'Sonia', 'Jean-Pierre', 'Sandra']

moins6 = []
plus6 = []

for elem in liste1:
    if len(elem) < 6:
        moins6.append(elem)
    else:
        plus6.append(elem)
        
print(plus6)
print(moins6)

输出:

['Maximilien', 'Brigitte', 'Jean-Pierre', 'Sandra']                                                                                                                          
['Jean', 'Sonia']