Python中的全局和局部范围变量;从循环内的数组中删除内部项
代码如下:Python中的全局和局部范围变量;从循环内的数组中删除内部项,python,arrays,variables,scope,Python,Arrays,Variables,Scope,代码如下: 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]:
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)
所以,在最后,它会毫无变化地打印整个阵列。我已经心碎了xd另外,在发布内部函数之前,我无法将数组设置为全局变量
您有两个问题:
如果数组[i]:
在数组[i]
为None
时,以及在0
时,将为false数组上进行迭代时,将从该数组中删除,这将导致迭代列表索引超出范围
None
,并在array
的副本上使用remove
,以便删除项目。您还可以跳过对int
或float
的检查,以及对int
的转换,它们不是必需的
def deleteObj(array):
for item in list(array):
if item is not None:
if item == 0:
array.remove(item)
else:
break
print(array)
你能帮我再做一个吗?直到问题冷却。我有代码:array.sort(key=lambda item:item是0)\n排序(array,key=lambda x:(x==0)并且x不是False)\n输入列表是[“a”,0.0,0,“b”,None,“c”,“d”,0,1,False,0,1,0,3,[],0,1,9,0,0,{},0,0,9]\n所以它在第一次尝试后立即返回,但对float没有任何作用