Как только функция что-то возвращает, она ломается. Следовательно, когда вы делаете return len(key)
, вы возвращаете длину списка после удаления первого 0
.
Если вы хотите, чтобы подсчитать, сколько раз что-то появляется в списке, просто сделать key.count('fizz')
Вы никогда не должны удалять элементы из списка во время прохода по нему. Посмотрите, что произойдет, если вы продолжили свой цикл, и там было больше "fizz"
эс:
>>> key = ['fizz', 1, 2, 3, 'fizz', 4]
>>> for x in key:
... if x != 'fizz':
... key.remove(x)
... print key # Print the list after an item is removed.
...
['fizz', 2, 3, 'fizz', 4]
['fizz', 2, 'fizz', 4]
['fizz', 2, 'fizz']
Обратите внимание, как он никогда не извлекал 2
? Потому что for-loop никогда не подходил к нему, потому что длина/порядок списка изменились.
Просто используйте встроенный метод 'count':' ["fizz", 0,0,0,10] .count ("fizz") '. – BrenBarn
@BrenBarn Подождите, я удалю все элементы, которые не "fizz". Разве я? – user2848908
Нет, это не так, как объясняют ответы. Вы удаляете один элемент, а затем прекращаете работу. – BrenBarn