gervaz <ger...@gmail.com> writes: > 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 > ... You can change the prg() function above slightly to make it a generator function: def genprg(l): for x in l: if x.v1 is not None: yield x.v1 if x.v2 is not None: yield x.v2 Then you can rewrite prg using join: def prg(l): return '\n'.join(genprg(l)) This way you save yourself from creating a list. I know this is not the one liner that others have suggested but it shows a general way of transforming a piece of code in order to make use of generator functions. -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list