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