从列表中删除项目和错误列表索引超出范围

时间:2020-09-19 04:22:10

标签: python python-3.x

L=[1,2,3,4,5]

x=input('Enter a value to remove from list: ')
while x!='quit':
    for i in range(0,len(L)):
        if L[i]==int(x):
            L.pop(i)
    x=input('Enter a value to remove from list: ')

您好,我收到一条错误消息,即“列表索引超出范围”,我认为这是由于列表大小的变化引起的,但我找不到解决方法。有没有使用列表推导的解决方案吗?

3 个答案:

答案 0 :(得分:0)

再次输入时,请再次输入i = 0。这将解决我认为的错误。 像这样:

L=[1,2,3,4,5]

x=input('Enter a value to remove from list: ')
while x!='quit':
    for i in range(0,len(L)):
        if L[i]==int(x):
            L.pop(i)
    x=input('Enter a value to remove from list: ')
    i = 0

这将确保下一次,我从0开始,然后再次在列表中搜索输入x。列表索引超出范围错误将通过这种方式修复。

要使代码更简洁,您可以做的另一件事就是使用快捷方式搜索元素是否在列表中:

L=[1,2,3,4,5]

x=input('Enter a value to remove from list: ')
while x!='quit':
    if x in L:
        L.pop(x)
    x=input('Enter a value to remove from list: ')

答案 1 :(得分:0)

当您执行此操作时,问题正在使用for循环从列表中删除,变量i进入len(L)-1,而列表仅应上升到len(L)-2现在已删除一个元素,而是使用index函数,请尝试以下操作:

L=[1,2,3,4,5]

try:
    x=int(input('Enter a value to remove from list: '))
except:
    print("Input Error")
    exit()
while x!='quit':
    try:
        L.pop(L.index(x))
    except:
        pass
    try:
        x=int(input('Enter a value to remove from list: '))
    except:
        print("Input Error")
        exit()

此外,您需要将输入转换为字符串,并且try函数用于完整性检查。

答案 2 :(得分:0)

祝你好运!

input_list = [1, 2, 3, 4, 5]

while True:
    try:
        user_input = input('Enter a value to remove from list: ')

        if user_input == 'quit':
            print("Thanks for your participation!")
            break

        if int(user_input) in input_list:
            input_list.remove(int(user_input))
            print('Removed!')
        else:
            print("Item not present!")

    except:
        print("Invalid input!")
    
    if len(input_list) == 0:
        print('List is empty now!')
        break