On Tue, 7 Jun 2005, D. Hartley wrote: > OK. I tried them out and I do see the diffence. (btw, testit1 gave me > the following error: > > Traceback (most recent call last): > File "<pyshell#72>", line 1, in ? > testit1() > File "<pyshell#68>", line 3, in testit1 > del fromlist[0] > IndexError: list assignment index out of range > > ... was that something you intended? that didnt happen with my > original problem).
Interesting; I get this: testit1: Denise problem a b c testit2: Python Gotcha #6 a b c testit3: the right way a a a > Anyway I def notice the diff between 2 and 3, but see here's the thing: > > I think I *do* want it like #2, becaues I want it to keep returning > the same list (i.e., move on and use line 2 (b), and then line 3 (c), > and so on), rather than keep iterating over the same first line (a) > over and over again. Okay, gotcha. Here's my take on this sort of thing: I like to look at a method as a black box, defined by the method signature and its call. My basic rule is that I don't every like a method to alter any data except what it passes back. So... My approach, which I think is a little more clean and isolatable, is to pass anything that the function needs to operate in as a parameter; then, if I want to alter that list, I create a new copy and pass that back. I have a deep distrust of globals. So instead of this: def snip_first: delete alist[0] # find alist via scoping rules return and calling it like this: alist = ['a', 'b', 'c'] snip_first() I'd prefer to set it up like thi: def snip_first(input_list): output_list = alist[:] delete output_list[0] return output_list alist = ['a', 'b', 'c'] alist=snip_first(alist) (Both of these are untested, I'm just winging it here.) > I want to take the first line in the picture, > rearrange the pixels, and pop that line into the new list that I can > then (eventually) create a new image from. I *thought* my list was > populated (it's 307200 pixels long, after all), but it wont work when > i try to putdata it onto a new blank image. I don't know about you, but if it were me, without that encapsulation, I'd have a tough time figuring out what's getting modified when. > > > where does the variable named "fromlist" come from? It's not passed into > > > the method as a parameter. > > No, I had it defined right before the function. it pulls it in just > fine. Yes, but global scoping often messes me up, so I always use a local scope. If it's not parameter-passed into or created in a method, I don't use it in the method. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor