String building using join

Emile van Sebille emile at fenx.com
Fri Dec 31 10:43:27 EST 2010


On 12/31/2010 7:22 AM gervaz said...
> Hi all, I would like to ask you how I can use the more efficient join
> operation in a code like this:
>
>>>> class Test:
> ...     def __init__(self, v1, v2):
> ...         self.v1 = v1
> ...         self.v2 = v2
> ...
>>>> def prg(l):
> ...     txt = ""
> ...     for x in l:
> ...         if x.v1 is not None:
> ...             txt += x.v1 + "\n"
> ...         if x.v2 is not None:
> ...             txt += x.v2 + "\n"
> ...     return txt
> ...
>>>> t1 = Test("hello", None)
>>>> t2 = Test(None, "ciao")
>>>> t3 = Test("salut", "hallo")
>>>> t = [t1, t2, t3]
>>>>
>>>> prg(t)
> 'hello\nciao\nsalut\nhallo\n'
>
> The idea would be create a new list with the values not None and then
> use the join function... but I don't know if it is really worth it.
> Any hint?
>
>>>> def prg2(l):

             return "\n".join([x for x in l if x])

Emile



> ...     e = []
> ...     for x in l:
> ...         if x.v1 is not None:
> ...             e.append(x.v1)
> ...         if x.v2 is not None:
> ...             e.append(x.v2)
> ...     return "\n".join(e)
> ...
>>>> prg2(t)
> 'hello\nciao\nsalut\nhallo'
>
> Thanks, Mattia





More information about the Python-list mailing list