George Sakkis wrote:

Another alternative is:

from operator import itemgetter

def m3():
    colours, nums = zip(*map(itemgetter('colour','num'), l))

It's slower than m1() but faster than m2(); it's also the most
concise, especially if you extract more than two keys.

Good you guys gave me some ideas, I've made m3() work:

def m3()
  total = [ [e['colour'], e['num'], e['couleur']] for e in l ]
  c,d,e = zip(*total)
  return map(list, [c,d,e])

(I have to transform to lists, I need to transform them later on, so tuples won't work).

Unfortunately the timing is inconsistant, the first time I run
python -m timeit 'import listcomp ; listcomp.m1()'

m1 is the fastest. But then if I run the test several times, they all seem to be about the same time ; I'll have to try with a large list.

Now here is a question:
Is there any way to change my first line there for the list comp. to return a list of lists rather than a list of tuples ?
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to