On 1/2/2011 9:43 AM gervaz said...
On 31 Dic 2010, 16:43, Emile van Sebille<em...@fenx.com>  wrote:
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- Nascondi testo citato

- Mostra testo citato -- Nascondi testo citato

- Mostra testo citato -

Sorry, but it does not work

Oh -- you want a working solution, not a hint?  OK.

class Test:
     def __init__(self, v1, v2):
         self.v1 = v1
         self.v2 = v2


t1 = Test("hello", None)
t2 = Test(None, "ciao")
t3 = Test("salut", "hallo")
t = [t1, t2, t3]


"\n".join([y for x in t for y in [x.v1,x.v2] if y])

Emile


def prg3(l):
...     return "\n".join([x for x in l if x])
...
prg3(t)
Traceback (most recent call last):
   File "<stdin>", line 1, in<module>
   File "<stdin>", line 2, in prg3
TypeError: sequence item 0: expected str instance, Test found


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to