Marcin Ciura wrote:
> None of the more efficient solutions is particularly
> straightforward, either:
>
> result = []
> for x in seq:
> result.append(fn(x))
> print ''.join(result)
>
> print ''.join([fn(x) for x in seq])
>
> print ''.join(fn(x) for x in seq)
>
> Moreover, all of them require creating one or two temporary
> objects to hold the entire result. If the programmers use one of
> them without qualms, it is only because their mind is warped by
> the limitation of print.
I can't say I lose much sleep over this, but you could add my preferred
workaround to the list (I don't believe it suffers from the same drawbacks
as the options you propose) and say why your comma solution is better than
it:
import sys
def nospace(value, stream=None):
'''Suppress output of space before printing value'''
stream = stream or sys.stdout
stream.softspace = 0
return str(value)
>>> print "a", nospace("b")
ab
>>> def fn(x):
return "<%s>" % x
>>> for i in range(10):
print nospace(fn(i)),
<0><1><2><3><4><5><6><7><8><9>
--
http://mail.python.org/mailman/listinfo/python-list