Abril 19

Ja! Levanto el guante del desafío que plantea Gastón en su blog:

juanjo@albus:~$ python
Python 2.5.1 (r251:54863, Mar 7 2008, 03:41:45)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
1. Dado un array con nombres de persona eliminar los nombre que comienzan con “Pe”:

>>> nombres = ['Pablo', 'Raul', 'Pedro', 'Pepe', 'Ariel', 'TerePe']
>>> [n for n in nombres if not n.startswith("Pe")]
['Pablo', 'Raul', 'Ariel', 'TerePe']

2. Verificar si el mismo array contiene el nombre “Raul”:

>>> "Raul" in nombres
True

3. Generar un string con todos los nombres unidos por “-”:

>>> "-".join(nombres)
'Pablo-Raul-Pedro-Pepe-Ariel-TerePe'

4. Generar un segundo array con los nombres todos en minúsculas ordenado alfabéticamente:

>> sorted([n.lower() for n in nombres])
['ariel', 'pablo', 'pedro', 'pepe', 'raul', 'terepe']

5. Desordenar el array:

>>> from random import shuffle
>>> shuffle(nombres)
>>> nombres
['Pepe', 'Pedro', 'Ariel', 'Raul', 'Pablo', 'TerePe']

6. Averiguar si la lista siguiente tiene números pares:

>>> bool([n for n in numeros if n % 2 == 0])
True

7. Averiguar si toda la lista son números pares:

>>> len(numeros) == len([n for n in numeros if n % 2 == 0])
False

8. Obtener el producto de una lista de números:

>>> f = lambda x,y: x*y
>>> reduce(f, numeros)
120

9. Obtener el factorial de 9999:

>>> reduce(f, xrange(1, 10000))
# la respuesta tiene 35656 caracteres.

10. Averiguar si dos arrays son iguales:

>>> [1,2,3,4] == [1,2,3,4]
True

¿Conclusiones? Creo que las listas por comprensión de la serpiente le gana a los .metodos del rubí. Pero en 6 y 7 perdemos feo :-/ ¿Algún pythonista que reescriba esos ejercicios?