Why not just: def f(list): return ''.join([chr(l) for l in list])
It is actually slower. Adding an f8 function using the ''.join() method: sikanda-13:30:02:/tmp$ python f.py [...] f1 0.07 f2 0.12 f3 0.07 f4 0.06 f5 0.09 f6 0.04 f7 0.02 f8 0.07 Original code linked in the article: http://www.python.org/doc/essays/f.py
[scotts@silver]$ /opt/local/bin/python2.6 f.py
f1 0.107
f2 0.19
f3 0.106
f4 0.097
f5 0.139
f6 0.073
f7 0.025
f8 0.103
edit: I added a ninth function, def f9(list):
return ''.join(map(chr, list))
To test if the difference between f8 and f6 was the list comprehension or the joinfields method. A result of 0.072 tells me it's the list comprehension. The only difference between f8 and f9 is list comprehension versus map. That leads me to conclude that map is indeed a faster way to construct a list than a list comprehension. (Although this may change for a user-defined function. I could test this, but I've spent enough time already.)