这是我的代码:
a=[1,0,None,3]
def b(my_list):
for i in range(len(my_list)):
if not my_list[i]:
a.remove(my_list[i])
else:
do_something()
return my_list
a = b(a)
print a
错误是:
Traceback (most recent call last):
File "c.py", line 18, in <module>
a = b(a)
File "c.py", line 12, in b
if not my_list[i]:
IndexError: list index out of range
那我该怎么办呢,
谢谢
最佳答案
您正在循环内修改正在迭代的同一个列表。您可以通过制作列表的副本 并返回它来解决此问题:
def b(my_list):
new_list = my_list[:]
for i in range(len(my_list)):
if not my_list[i]:
new_list.remove(my_list[i])
else:
do_something()
return new_list
通常在Python中,当你调用b(a)
这样的函数时,那么在b
里面,参数my_list
就是一个引用与传入的 相同 列表 (a
)。语句 new_list = my_list[:]
创建一个列表的副本,您可以在函数内部修改并返回该列表。
关于python - 如何使用python处理我的代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5812817/