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

Reply via email to