У вас есть две проблемы:
if array[i]:
будет ложным, когда array[i]
равно None
, но также и когда 0
. - Вы удаляете начиная с
array
, при итерации по нему, он будет вызывать итерацию list index out of range
Вам необходимо проверить, является ли элемент None
явно, и использовать remove
для копии array
так что вы можете удалить предметы. Вы также можете пропустить чеки на 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)