python - 简单的列表程序不起作用 - 列表索引超出范围错误
问题描述
好的,所以这个程序的工作非常简单,通过使用名为 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
解决方案
这是运行代码时发生的情况:
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
内置的.
推荐阅读
- cordova - 带有targetsdk 29的初始屏幕后Cordova应用程序崩溃
- c# - Blazor 中 XML 列表的反序列化
- java - onCreate 中的函数不是每次都执行
- flutter - Flutter - 尽可能频繁地改变状态
- javascript - 依赖注入试图为Angular 8中的分层抽象组件传递非服务
- wso2 - WSO2 API 管理器 - CORS
- c++ - 每次调用函数时如何在循环中迭代一次?
- python - 如何停止python中的线程?
- loops - LISP 循环返回 NIL
- azure-web-app-service - 在运行时确定用户分配的托管标识的客户端 ID?