繁体   English   中英

Python 中的全局和局部范围变量; 从循环内的数组中删除里面的项目

[英]Global and local scope variables in Python; Delete item inside from array inside the loop

这是代码:

def deleteObj(array):
    for i in range (0, len(array)):
        if array[i]:
            if type(array[i]) == int or type(array[i]) == float:
                if int(array[i]) == 0:
                    del array[i]
        elif not array[i]:
            break

    print(array)

所以,最后它会不加改变地打印整个数组。 我已经心碎了 xDxDxD
PS 在函数内部发布之前,我无法将数组设为全局变量

你有两个问题:

  1. if array[i]:array[i]None时为假,当它为0时也为假。
  2. 您在迭代时从array中删除,它会导致迭代list index out of range

您需要明确检查该项目是否为None ,并在array副本上使用remove以便您可以删除项目。 您也可以跳过对检查intfloat和铸造int ,他们是没有必要的

def deleteObj(array):
    for item in list(array):
        if item is not None:
            if item == 0:
                array.remove(item)
        else:
            break

    print(array)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM