[Tutor] List methods/comps Best Practices
stv
stvsmth at gmail.com
Mon Apr 3 17:26:37 CEST 2006
I just thumped my head against the wall for a few hours on something,
and I was wondering if it's just my green-ness in Python, or if I'm
doing something unsavory.
I had several list comprehensions that I was mucking with; these lists
are working on a simple subclass of the built-in list object. They
looked liked this:
filelist = getFilesToAdd()
filelist2 = getFilesToDel()
adds = MyList('foo')
dels = MyList('bar')
[adds.add_changes('foo', path) for path in filelist]
[dels.add_changes('bar', path) for path in filelist2]
# return all changes, deletes first
return dels.extend(adds)
Since extend returns None, I ran into a lot of not-iterable errors
when calling this code. So I fixed this with
dels.extend(adds)
return dels
And all is good, although it took way more head scratching than typing
. (In writing this, I now vaguely remember one of my tutorials warning
me about something ... maybe this was that? :)
So my question is this: Is this just one of those things that I learn
the hard way in Pthon & that's it, or am I doing something weird? I
shoulda figured this out when I was debugging the method in the
interpreter and my original list comprehensions returned
[adds.add_changes('foo', path) for path in filelist]
>>> [None, None, None]
as each call to add_changes returned no value. Alas, I'm not that
smart. Is it bad form to not have an "assignment" for the list comps?
More information about the Tutor
mailing list