#!/usr/bin/env python import sys class ListResize: def __init__(self): self.allocated = 0 def resize(self, newsize): if newsize <= self.allocated: return self.allocated new_allocated = (newsize >> 3) + (3 if newsize < 9 else 6) self.allocated = newsize + new_allocated return self.allocated def test(endsize): l = ListResize() sizes = set() for i in range(endsize): sizes.add(l.resize(i)) return sizes if __name__ == "__main__": for endsize in sys.argv[1:]: endsize = int(endsize) resizes = len(test(endsize)) print("{} list.append() do {} resize ops.".format(endsize, resizes))