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.