1. Suprimir valors d’una seqüència (6 punts)¶
Avís
Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements d’un iterador.
Es demana que dissenyeu la funció generadora especificada a continuació i la deseu en un fitxer anomenat suprimeix.py:
- suprimeix.suprimeix_n_valors(it, v, n)¶
- Paràmetres:
it – iterador sobre una seqüència S de valors qualssevol
v – valor que cal eliminar
n – enter que indica quants valors v cal suprimir de S
- Retorna:
iterador sobre la mateixa sequència S però en la qual s’han suprimit els n primers valors que coincideixen amb v. Així, si S contenia n o menys valors v, s’hauran suprimit tots; en canvi, si S contenia més de n valors v, se n’hauran suprimit només les n primeres ocurrències.
Per exemple:
>>> from suprimeix import suprimeix_n_valors
>>> it1 = iter('abracadabra')
>>> it2 = suprimeix_n_valors(it1, 'a', 3)
>>> next(it2)
'b'
>>> next(it2)
'r'
>>> for x in it2:
... print(x, end='-')
c-d-a-b-r-a-
>>> for x in suprimeix_n_valors(iter('abracadabra'), 'a', 5):
... print(x, end='-')
b-r-c-d-b-r-
Disposeu d’un joc de proves més complet en el fitxer tests-suprimeix.txt