1. Iteradors: Selecció (2 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 dels iteradors.
Es disposa de dos iteradors, el primer (itS) de strings (str) i el segon (itE) d’enters positius (int). Per cada parella d’elements dels iteradors (es, ei) (amb \(es\in itS\) i \(ei \in itE\)), es vol generar el ei -èssim caracter de es. Si ei és fora del rang d’indexos de es, no es genera cap caràcter. Per exemple, per la parella (“poma”, 2), es genera el caràcter “m” (el d’índex 2) i per (“poma”, 4) no se’n genera cap (perquè 4 > 3).
En un fitxer anomenat seleccio.py deseu la funció especificada a continuació.
- seleccio.seleccio_valor(it1, it2)¶
- Paràmetres:
- Retorna:
un iterador de
strde longitut 1, tal que per cada parella d’elements dels iteradors it1 i it2 es genera el caràcter de l’element de it1 d’índex igual a l’element de it2 si aquest està dins del rang d’indexos vàlids.
Per exemple:
>>> it1 = iter(['hola', 'hola', 'adeu', 'butxaca'])
>>> it2 = iter([0, 5, 1, 3])
>>> list(seleccio_valor(it1, it2))
['h', 'd', 'x']
>>> it1 = iter(['hola', 'hola', 'adeu', 'butxaca', 'amor', 'pare'])
>>> it2 = iter([1, 5, 3, 6, 5, 0])
>>> list(seleccio_valor(it1, it2))
['o', 'u', 'a', 'p']
Disposeu d’un joc de proves més complet al fitxer tests-seleccio.txt.