2017-09-16 127 views
-1

我是初学者。我正在编写一个删除'!'的python程序和'。'从列表中。用户输入任何字符串。 Python将其转换为列表并删除!和。并再次打印更改的列表。这里是我的代码:用循环迭代时出现“列表索引超出范围”错误

x = input("Enter a string: ") 

y = list(x) 

for i in range(len(y) - 1): 

    if y[i] == '!' or y[i] == '.': 
     y.pop(i) 
print("Altered list is: ",y) 

即使当我做range(len(y)-1)range(len(y))它显示了错误:
List index out of range

+0

迭代时删除项目:不好 –

+0

您正在通过从每个迭代删除项目来修改列表。不要这样做。相反,重建包含您想要保留的项目的列表。 – roganjosh

+0

谢谢大家的帮助。我不仅仅是得到那个简单点再次感谢。 – user8619561

回答

0

您正在遍历正在修改的列表......它不能很好地结束。

试试这个办法来代替:

y = [elt for elt in y if elt != "!" or elt != "."] 

它将重建你的列表中,省略了不需要的元素。

+1

谢谢Reblochon。 – user8619561

相关问题