#!/usr/bin/python3
# ===================================================================
# demo the number of elements in a list vs the capacity of a list
#
# adding an element to a list does not allocatte space for one
# element at a time. rather space is allocated in chunks using
# a sliding scale.
# Notes:
# 1. a list has 56 bytes of overhead in it's data structure
# 2. getsizeof returns the number of bytes allociated to a list
# ===================================================================
import sys
# ---- number of slots available in a list
# ---- (some are used and some are not)
def list_capacity(lst:list):
return (sys.getsizeof(lst) - 56) // 8
# ---- test/display list capacity vs elements actually in the list
def test_list_capacity():
lst = []
for i in range(20):
print(f'[{i:03}] len={len(lst):<3} capacity={list_capacity(lst)}')
lst.append(i)
# ---- main
test_list_capacity()