John Fouhy wrote: > On 24/09/06, Python <[EMAIL PROTECTED]> wrote: >> slices may be the best way to go >> listA = biglist[0::3] # start from index 0 taking every third element >> listB = biglist[2::3] # start from index 2 taking every third element > > I'm not certain they would be.. If you do that, you will: > > 1. Create a really big list. > 2. Go through the list, taking every third element. > 3. Go through the list again, taking every third+2 element. > > If the list is really big, step 1. might take some time and/or space, > and you would like to avoid it.
That's a good point, though the OP didn't seem to have a problem with memory. > > If we have: > > f2= open('myfile','r') > listA = [] > listB = [] > > then we can iterate through f2 as follows: > > for i, line in enumerate(f2): > if i % 3 == 0 then > listA.append(line) > elif i % 3 == 2 then > listB.append(line) > > This may be faster.. > (although I should like to see evidence before committing to that > statement :-) ) Since the end goal seems to be to create a dictionary, there is really no need to create the intermediate lists at all. You could do something like this (following your file example): d = {} while 1: try: key, _, value = f2.next(), f2.next(), f2.next() d[key] = value except StopIteration: pass To do this with a list instead of a file use f2=iter(reallyBigList). Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor