首页 > 解决方案 > 简单的列表程序不起作用 - 列表索引超出范围错误

问题描述

好的,所以这个程序的工作非常简单,通过使用名为 question 的输入函数,我想将用户输入的每个字符分成一个单独的字符串,然后放在一个列表中,例如,如果用户输入:a,b ,c我希望将输出存储在这样的列表中,list = ["a", ",", "b", ",", "c"]然后通过使用 for 循环,我希望找到并删除列表中每个逗号的索引,只留下这个作为输出:list = ["a", "b", "c"]。我究竟做错了什么?

question =input(">")

def split(question):
    return [char for char in question]


list = split(question)
print(list)

comma_index_ask = [i for i in range(len(list)) if list[i] == ","]
print(comma_index_ask)

for item in comma_index_ask:
    list.pop(comma_index_ask[item])

print(list)

输出:

>a,b,c
['a', ',', 'b', ',', 'c']
Traceback (most recent call last):
  File "C:main.py", line 14, in <module>
    list.pop(comma_index_ask[item])
IndexError: list index out of range

标签: python

解决方案


这是运行代码时发生的情况:

list = ['a', ',', 'b', ',', 'c']
comma_index_ask = [1, 3]

item = 1
list.pop(comma_index_ask[1])    # comma_index_ask[1]: 3
list.pop(3)                     # list: ['a', ',', 'b', 'c']

item = 3               
list.pop(comma_index_ask[3])    # comma_index_ask[3]: ???

要过滤list,请使用列表推导:

list = [char for char in list if char != ',']

另外,不要命名你的变量list,它会影响list内置的.


推荐阅读