2. Eliminar un element d’una seqüència (4 punts)

Avís

Per a resoldre aquest exercici no es poden fer servir iteracions (ni for ni while ), només les funcions predefinides de Python i les dels mòduls itertools, functools i operator. Tampoc 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 implementeu la funció especificada a continuació, que elimina l’element i-èssim d’una seqüència. Deseu-la al fitxer elimina.py.

elimina.elimina_de_seq(it, i)
Paràmetres:
  • it – iterador sobre la seqüència seqüència \(x_0 \; x_1 \; x_2 \; x_3 \; \dots\)

  • i – enter \(\geq 0\)

Retorna:

iterador sobre la seqüència \(x_0 \; \dots \; x_{i-1} \; x_{i+1} \; \dots\)

Per exemple:


>>> from elimina import elimina_de_seq

>>> it1 = iter([0, 11, 22, 33, 44, 55, 66, 77])
>>> it2 = elimina_de_seq(it1, 2)
>>> next(it2)
0
>>> next(it2)
11
>>> next(it2)
33
>>> for x in it2:
...   print(x, end=',')
44,55,66,77,

Per a resoldre aquest problema es recomana que, a part de les funcions sobre iterables habituals, feu servir enumerate(). Una altra alternativa és utilitzar itertools.islice() i itertools.chain().

Disposeu d’un joc de proves més complet al fitxer tests-elimina.txt.