Serpientes y rubíes
Este post fue migrado de un blog hecho con Wordpress. Si se ve mal, dejame un comentario y lo arreglo.
Ja! Levanto el guante del desafío que plantea Gastón en su blog:
1. Dado un array con nombres de persona eliminar los nombre que comienzan con “Pe”: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.
>>> nombres = ['Pablo', 'Raul', 'Pedro', 'Pepe', 'Ariel', 'TerePe'] >>> [n for n in nombres if not n.startswith("Pe")] ['Pablo', 'Raul', 'Ariel', 'TerePe']
- Verificar si el mismo array contiene el nombre “Raul”:
>>> "Raul" in nombres True
- Generar un string con todos los nombres unidos por “-”:
>>> "-".join(nombres) 'Pablo-Raul-Pedro-Pepe-Ariel-TerePe'
- 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']
- Desordenar el array:
>>> from random import shuffle >>> shuffle(nombres) >>> nombres ['Pepe', 'Pedro', 'Ariel', 'Raul', 'Pablo', 'TerePe']
- Averiguar si la lista siguiente tiene números pares:
>>> bool([n for n in numeros if n % 2 == 0]) True
- Averiguar si toda la lista son números pares:
>>> len(numeros) == len([n for n in numeros if n % 2 == 0]) False
- Obtener el producto de una lista de números:
>>> f = lambda x,y: x*y >>> reduce(f, numeros) 120
- Obtener el factorial de 9999:
>>> reduce(f, xrange(1, 10000)) # la respuesta tiene 35656 caracteres.
- 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?
Comentarios