Собственно, подумайте об этом в другом случае. Предположим, что если ваш список таков:
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
, и если вы напишете myList[0][0] = 5
, вы получите:
>>>
[[5, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
>>>
Как и ожидалось. Но так как вы определяете свою переменную списка следующим образом:
[[1] * 4] * 3
Python обработает ваши коды по этому шаблону. Поэтому, если вы напишете myList[0][0]
и ваш список, как указано выше, Python обработает его, как [1]*3
. Вот почему все списки первых элементов изменены.
Сначала нужно составить список:
print(sr.tolist().count(0))
Тогда было бы хорошо.
Выход:
2
Коллекции имеют класс Counter, попробуйте:
from collections import Counter
cntr = Counter()
cntr.update(sr.tolist())
Теперь cntr будет иметь sr в качестве ключей, а их количество - в качестве значений. Надеюсь, это поможет.