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