[pyar] [OT] - Checkeando parentesis balanceados.

Claudio Freire klaussfreire en gmail.com
Vie Jun 18 14:38:11 ART 2010


2010/6/18 Daniel Moisset <dmoisset en machinalis.com>

> 2010/6/18 Mariano Garcia Berrotarán <garcia.berrotaran en gmail.com>:
> > mi pregunta es la siguiente:
> >
> > a alguien se le ocurre alguna forma de hacerlo usando list comprehension
> ?
>
> Si es obligatorio usar una comprehension te diria algo con esta idea...
>

La idea numpy es "tipo list comprehension".

Si se quiere puro list comprehension, se puede seguir una idea similar:

>>> def balanceado(s):
...     cum = 0
...     for balance in [ cum for c in s for cum in [cum + int(c=='(') -
int(c==')')] ]:
...         if balance < 0:
...             return False
...     return balance == 0
...
>>>
>>>
... lines = [
...     "(hola(chau))",
...     "((",
...     "()",
...     "()()()",
...     "((()(())()))",
...     "((()(())())))",
...     "(((()(())()))",
... ]
>>>
>>> for line in lines:
...     if balanceado(line):
...         print "balanceado:", line
...     else:
...         print "desbalanceado:", line
...
balanceado: (hola(chau))
desbalanceado: ((
balanceado: ()
balanceado: ()()()
balanceado: ((()(())()))
desbalanceado: ((()(())())))
desbalanceado: (((()(())()))
>>>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100618/8c87a1b4/attachment.html>


More information about the pyar mailing list