这是我的代码:
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[:] 创建一个列表的副本,您可以在函数内部修改并返回该列表。
