getsizeof возвращает одно и то же значение для, казалось бы, разных списков

У меня есть следующее двухмерное растровое изображение:

num = 521
arr = [i == '1' for i in bin(num)[2:].zfill(n*n)]
board = [arr[n*i:n*i+n] for i in xrange(n)]

Просто для любопытства я хотел проверить, сколько еще места займет, если в нем будут целые числа вместо логических. Поэтому я проверил текущий размер сsys.getsizeof(board) и получил104

После этого я модифицировал

arr = [int(i) for i in bin(num)[2:].zfill(n*n)] , но все же получил104

Тогда я решил посмотреть, сколько я получу с помощью только строк:

arr = [i for i in bin(num)[2:].zfill(n*n)], который все еще показывает104

Это выглядит странно, потому что я ожидал, что список списков строк будет тратить больше памяти, чем просто логические значения.

Видимо, я что-то упускаю из-за того, как getsizeof вычисляет размер. Может кто-нибудь объяснить мне, почему я получаю такие результаты.

Постскриптум благодаря ответу Zehnpard, я вижу, что я могу использоватьsum(sys.getsizeof(i) for line in board for i in line) примерно посчитать память (скорее всего она не будет считать списки, что не так уж важно для меня). Теперь я вижу разницу в числах для string и int / bool (без разницы для int и boolean)

Ответы на вопрос(1)

Ваш ответ на вопрос