python - 如何使用python处理我的代码错误

标签 python list

这是我的代码:

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/

相关文章:

python - 当 LANG=C 时如何在 Python 2 中打印 Unicode

list - 将列表元素的连续重复项打包到子列表中

python - a.insert(0,x) 是一个 o(n) 函数吗? a.append 是一个 O(1) 函数吗? Python

css - 将级联列表样式化到表中

android - 在android中按大小排序文件列表

python - 找不到页面 (404) - 没有产品与给定的查询匹配

python - 我可以使用 ctypes 从 C 中嵌入的 python 回调 C 函数吗?

python - 导入时,django-import-export csv header 之前的空行触发异常

Python:将excel数据转换成dataframes

python-3.x - Python 中的隐秘列表对象重新表示为 [...]