Printing with interspersed element

Matimus mccredie at gmail.com
Fri Oct 31 01:39:56 CET 2008


On Oct 30, 2:10 pm, "Paulo J. Matos" <pocma... at gmail.com> wrote:
> On Thu, Oct 30, 2008 at 8:42 PM, Arnaud Delobelle
>
>
>
> <arno... at googlemail.com> wrote:
> > On Oct 30, 8:07 pm, "Paulo J. Matos" <p... at ecs.soton.ac.uk> wrote:
> >> Hi all,
>
> >> I guess this is a recurring issue for someone who doesn't really know
> >> the python lib inside out. There must be a simple way to do this.
> >> I have a list of objects [x1, x2, x3, ..., xn] and I have defined a
> >> print method for them print_obj(). Now I want to print them
> >> intersepersed by an element.
> >> If I print [x1, x2, x3] interspersed by the element 10:
> >> x1.print_obj() 10 x2.print_obj() 10 x3.print_obj()
>
> >> Now, the question is, what's the best way to do this?
>
> > Defining a print_obj() method is probably a bad idea.  What if you
> > want to print to a file for example?  Instead you can define a
> > __str__() method for your objects and then use the join() method of
> > strings like this:
>
> > print ' 10 '.join(str(x) for x in lst)
>
> Thanks for the tip but that has an issue when dealing with potentially
> millions of objects. You are creating a string in memory to then dump
> to a file [or screen] while you could dump to the file [or screen] as
> you go through the original string. Right?

Then I hope you are using stackless, because you are going to stack
overflow _way_ before you recurse 1 million times.

def print_list(seq, sep=','):
    seq = iter(seq)
    print seq.next(),
    for item in seq:
        print sep,
        print item,
    print

Matt



More information about the Python-list mailing list