2. Modifiquem amb l’anterior (5 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 dissenyeu la funció especificada a continuació i la deseu en un fitxer anomenat anterior.py:
- anterior.modifica(it, l)¶
- Paràmetres:
it – Iterador d’una seqüència d’enters positius \(N_1, N_2, \dots\)
l – Llista d’enters més gran o iguals que 0 i menors o iguals que \(9\)
- Retorna:
Iterador sobre la seqüència \(N_{i_1}+N_{i_1}^2,N_{i_2}+N_{i_2}^2, \dots\) on \(N_i\) són els enters de it tals que la darrera xifra del seu quadrat, de \({N_i}^2\), no està en la llista l.
>>> from anterior import modifica
>>> itr = modifica(iter([3, 5, 2, 8]), [2, 4])
>>> for x in itr:
... print(x, end=',')
12,30,
>>> next(itr, 'final')
'final'
>>> itr2 = modifica(iter([3, 5, 2, 8]), [1, 5])
>>> for x in itr2:
... print(x, end=',')
12,6,72,
>>> next(itr2, 'final')
'final'
Disposeu d’un joc de proves més complet al fitxer tests-anterior.txt