On Jun 19, 9:00 am, 7stud <[EMAIL PROTECTED]> wrote: > On Jun 18, 10:07 am, "filox" <[EMAIL PROTECTED]> wrote: > > > is there a way to find out the size of an object in Python? e.g., how could > > i get the size of a list or a tuple? > > > -- > > You're never too young to have a Vietnam flashback > > You can use the struct module to find the size in bytes: > > import struct > > mylist = [10, 3.7, "hello"] > > int_count = 0 > float_count = 0 > char_count = 0 > > for elmt in mylist: > if type(elmt) == int: > int_count += 1 > elif type(elmt) == float: > float_count += 1 > elif type(elmt) == str: > char_count += len(elmt) > > format_string = "%di%dd%dc" % (int_count, float_count, char_count) > list_size_in_bytes = struct.calcsize(format_string) > print list_size_in_bytes > > --output:-- > 17
That would give you the size taken up by the values. However each object has in addition to its value, a pointer to its type, and a reference count -- together an extra 8 bytes each on a 32-bit CPython implementation. A second problem is that your calculation doesn't allow for the interning of some str values and some int values. A third problem is that it caters only for int, float and str elements -- others count for nothing. -- http://mail.python.org/mailman/listinfo/python-list