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