On 11/7/2011 1:22 PM, John Gordon wrote:
In<cf007146-3a08-44c4-bf01-d1a9253c8...@o19g2000vbk.googlegroups.com>
JoeM<josephmeir...@gmail.com> writes:
Thanks guys, I was just looking for a one line solution instead of a
for loop if possible. Why do you consider
[x.remove(x[0]) for x in [a,b,c]]
cheating? It seems compact and elegant enough for me.
It looks like incomplete code with 'somelists = ' or other context
omitted. It saves no keypresses '[',...,SPACE,...,']' versus
...,':',ENTER,TAB,... . (TAB with a decent Python aware editor.)
I wouldn't call it cheating, but that solution does a fair bit of
unneccessary work (creating a list comprehension that is never used.)
The comprehension ( the code) is used, but the result is not. If the
source iterator has a large number of items rather than 3, the throwaway
list could become an issue. Example.
fin = open('source.txt')
fout= open('dest.txt, 'w')
for line in fin:
fout.write(line.strip())
# versus
[fout.write(line.strip()) for line in fin]
If source.txt has 100 millions lines, the 'clever' code looks less
clever ;=). Comprehensions are intended for creating collections (that
one actually wants) and for normal Python coding are best used for that.
--
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list