
Listas
A modo de comparación, podríamos decir que una lista es el equivalente a un array en C. Pero a diferencia de un array típico en C, en Python, las listas pueden incluir cualquier tipo de dato.
Declaración: Como ya dije, es bastante sencillo e intuitivo. Veamos un ejemplo.
lista = [1,2,3,4,5]Como vemos, asignamos el nombre de la lista y ponemos los datos entre paréntesis. En este caso he incluido números enteros, pero podemos "mezclar" mas tipos de datos:
lista = [1,"Hola",3,"mundo",5]Ahora, he intercalado enteros con cadenas de caracteres. Llegados a este punto, lo mas típico es recorrer nuestra lista para interactuar con los elementos. A los que vengan de C/C++ como yo, les va a gustar esto. En python, el tipo de bucle for es usado para iterar sobre elementos de una colección, en este caso, de una lista. Me gusta resumir esto con una frase: "For element in List". La sintaxis es bastante clara, podré el ejemplo:
lista = [1,"Hola",3,"mundo",5]elemento actúa en este caso como la posición dentro del "Array". Por lo cual, podríamos decir "Para lista[elemento] en lista: ". A cada pasada del bucle for, se incrementará. Por lo cual, la salida por pantalla de este código será:
for elemento in lista:
print elemento
1Como vengo repitiendo, bastante intuitivo. Podemos también cambiar el valor de los elementos dentro de la lista, accediendo a través de su posición.
Hola
3
Mundo
5
lista[2] = 10Como curiosidad, podemos acceder a la inversa a la Lista (Otra novedad, para los que venimos del mundo C) la posición -1 equivale a la última posición de la lista: Por lo tanto, si escribimos print lista[-1] imprimiremos el último elemento de la lista (5). Con -2, el penúltimo (Mundo), etc.
Otra novedad, para los noveles, es la técnica Slicing. En vez de seleccionar solo un dato, podemos seleccionar una "porción" con varios datos a la vez. Esto lo hacemos indicando el Principio y el Fin de la "Porción". También, opcionalmente, podemos seleccionar el número de saltos que queremos dar. Veamos un ejemplo:
lista2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]Como vemos, imprimimos desde la posición 0 a la 5 de lista2. La opción con saltos, sería:
print lista2[0:5]
print lista2[2:9:3]Con lo que imprimimos los elementos del 2 al 9 con saltos de 3 elementos (En lista2, imprimiremos [3, 6, 9]). Evidentemente si omitimos alguno de los elementos Inicio/Final, se usará el principio de la lista y el final de la lista.
Tuplas
Llegamos a una nueva forma de colección de datos. Al contrario que las listas, las tuplas son inmutables: No varían el tamaño ni pueden ser modificadas una vez creadas. Se usan prácticamente igual que una lista, excepto por la declaración, pues en vez de corchetes se usan paréntesis.
tupla = (1,2,3)Se accede a los elementos igual que en una lista, refiriéndonos a los mismos entre corchetes. Pongo un ejemplo de acceso a un elemento de una tupla, con Slicing.
for elemento in tupla:
print elemento
mivar = tupla[-1:]
Diccionarios
Y llegamos por fin a la parte que mas me gusta de este capítulo, los Diccionarios. Son colecciones de datos que contienen una clave y un valor. dic = { "Dato A" : "Sergio", "Dato B" : "Carmen", "Dato C" : "Isaac"}Se puede diferenciar el modelo Clave:Valor. Las claves deben ser valores inmutables (Como cadenas, números, tuplas, etc).
Esto es así porque accedemos a los elementos a través de la clave y no de la posición (Osea, lo hacemos como si fuera una tabla hash).
Vamos a acceder ahora a nuestros valores. Para ello, debemos acceder desde la clave.
print dic["Dato A"]Esto mostrará la clave asociada "Sergio".
Para finalizar, os dejo un enlace con el código de ejemplo de todo lo explicado aquí arriba. [Click]
OMG me encanta!
ResponderEliminar:| saltar de C a esto... ¡que pasada!
ResponderEliminarTambien, lo interesante de las listas es que se pueden hacer listas de listas, por ejemplo cuando quieres hacer una lista de nombres de alumnos, y sus notas, seria algo asi:
ResponderEliminarSerch = ["Serch", 9,10]
Rock = ["Rock", 10,9]
alumnos = [Serch, Rock]
for i in alumnos:
for j in alumnos[i]:
if j == 0:
print "alumno:", alumno[i][0]
else:
print "Nota:", alumno[i][j]
Luego, todo esto es muuuucho mas simple con los registros, pero eso lo explicare cuando sea colaborador, que tiene muuucha telita ;)