Filtra¶
Dissenya la versió recursiva de l’esquema de recorregut filtra.
Desa al mòdul iesquemes la funció recursiva següent:
- iesquemes.ifiltra(cond, it)¶
Filtra els elements de it que compleixen la condició cond.
- Paràmetres:
funcio – funció amb un paràmetre.
seq – iterador.
- Tipus de retorn:
iterador
- Retorna:
(e for e in seq if cond(e))
Per exemple:
>>> s = [2, -1, -5, 7, -25] >>> list(ifiltra(lambda x: x<0, iter(s))) [-1, -5, -25] >>> list(ifiltra(lambda x: x**2>10, iter(s))) [-5, 7, -25] >>> list(ifiltra(lambda x: x>0, iter(s))) [2, 7]
Disposes de més jocs de proves al fitxer
test-ifiltra.txt i d’una solució al fitxer
iesquemes.py.
Solució recursiva lineal¶
def ifiltra(condicio, it):
e = next(it, None)
if e:
r = ifiltra(condicio, it)
if condicio(e):
yield e
yield from r