[Tutor] Building Starships -- object of type 'int' has no len()

Terry--gmail terry.kemmerer at gmail.com
Wed Aug 20 22:38:29 CEST 2014


Marc, my understanding is, is that:

     lens[col].append(len(item))

-should be building a mirror image of my list of lists called catalog2, 
which currently has 9 columns by x number of rows, and that we are 
plugging into these positions, the sizes of all the elements in that 
block of data.

If that is true, then lens[col] is creating lists which contain the 
sizes of the elements in that particular column.

So, I completely don't understand why we would eliminate the positioning 
of which list we are referencing in lens by saying:

     lens.append(len(item))

It seems to me that, that statement would put the entire block of 
element sizes into one list, and the next MAX statement would then yield 
only a single number, which would be the largest size element it 
encounted in the whole of catalog2!

Or am I really missing the boat here? :)

Thanks for your thoughts!
--Terry



On 08/20/2014 02:26 PM, Marc Tompkins wrote:
>
> On Aug 20, 2014 12:07 PM, "Terry--gmail" <terry.kemmerer at gmail.com 
> <mailto:terry.kemmerer at gmail.com>> wrote:
> >
> > Alan Gauld
> >
> > Hi!
> > We are not quite out of the woods on this last example you gave me. 
> It now seems to be complaining
> > that it doesn't want to append an integer to the list or that this 
> isn't the place to use '.append'  -- I am probably interpreting it's 
> complaint wrong:
> >
> > Python 3.3
> >
> > If I run this last piece of code that we just added 'enumerate(row)' to:
> >
> > lens = [0] * len(catalog2[0])
> > for row in catalog2:
> >
> >     for col, item in enumerate(row):
> >         print(col, item, len(item))
> >
> >         lens[col].append(len(item))
> > lens = [max(col) for col in lens]
> >
> > My result is:
> >
> > 0 Drives 6         <<---- my print statement result
> >
> > Traceback (most recent call last):
> >   File "/home/justme/1a_Computer_Related/Python/scripts/scratch.py", 
> line 43, in <module>
> >     lens[col].append(len(item))
> > AttributeError: 'int' object has no attribute 'append'
> >
> Once again you're confusing the list with its contents.  lens is a 
> list; lens[col] is an integer.  lens.append(whatever) should do the trick.
>



More information about the Tutor mailing list