Colecciones en Python


Anteriormente habíamos visto algunos tipos básicos de datos como los booleanos, enteros y cadenas de texto.

A continuación veremos como utilizar algunos tipos de colecciones que nos ofrece Python.

Listas


Las listas son colecciones de datos ordenadas y son el equivalente a los ArrayList o vectores de Java o C#.
En Python las listas y las colecciones en general pueden almacenar cualquier tipo de dato, como objetos, números, colecciones, etc.

Este es un ejemplo donde podremos ver cómo utilizar las listas:

if __name__ == '__main__':      #equivale a public static void main de Java
    listado = [] #inicializamos una lista
    print("Todo lo que escribas sera guardado en una lista")
    while True:
        dato = raw_input("> ");
        if( dato=="fin" ): 
            break
        #se agrega al final de la lista un nuevo elemento
        listado.append(dato)
    
    if listado.__len__()>0:
        print("Estos son los datos ingresados")
        for i in listado:
            #la coma permite imprimir el contenido en 
            # una sola fila como un System.out.print de Java
            print i , 
        
    else:
        print("No se ingreso nada en la lista")

Python posee una característica denominada slicing y que permite seleccionar u obtener una partición de la lista, por ejemplo:
lista = ["h","o","l","a"," ","m","u","n","d","o"]
print( lista[2:5] ) #1) imprime ['l', 'a', ' ']
print( lista[:4] ) #2) imprime ['h', 'o', 'l', 'a']
print( lista[5:] ) #3) imprime ['m', 'u', 'n', 'd', 'o']
print( lista[:] ) #4) imprime ['h', 'o', 'l', 'a', ' ', 'm', 'u', 'n', 'd', 'o']
print( lista[0:4:2] ) #5) imprime ['h', 'l']
print( lista[::2] ) #6) imprime ['h', 'l', ' ', 'u', 'd']
print( lista[::3] ) #7) imprime ['h', 'a', 'u', 'o']

En el caso '1' se obtiene un fragmento del arreglo desde la posición 2 hasta la 4.
En el caso '2' se imprime el arreglo desde la posición 0 hasta la 3.
En el caso '3' se imprime el arreglo desde la posición 5 hasta la última (9).
En el caso '4' se imprime todo el arreglo.
*cuando no se especifica un número a la izquierda del slicing (:) se toma por defecto la primera posición del arreglo y a la derecha se toma la última posición.
En el caso '5' imprime desde la posición 0 hasta la 3 cada 2 caracteres.
En el caso '6' imprime desde la posición 0 hasta la 9 cada 2 caracteres.
En el caso '7' imprime desde la posición 0 hasta la 9 cada 3 caracteres.


Tuplas


Las tuplas se manejan exactamente igual a las listas, y las características más relevantes que poseen son:
-A diferencia de las listas ([]), las tuplas se inicializan con ().
-Son inmutables, es decir, su contenido no puede ser modificado.
-Tienen tamaño fijo.
-Utilizan menos memoria que las listas.

lista = ["h","o","l","a"," ","m","u","n","d","o"]
unaTupla = tuple( lista )
print( unaTupla[2:5] ) #1) imprime ['l', 'a', ' ']


Diccionarios


Los diccionarios son colecciones que permiten relacionar una clave con un valor y son el equivalente a los HashMap de Java.
La principal diferencia entre los diccionarios con las tuplas y listas, es que sus valores no son accedidos a través de un índice, porque no poseen orden (ya que los diccionarios se implementan como tablas hash), sino que mediante su clave utilizando el operador [clave]. Por esta misma razón es que tampoco puede aplicarse slicing sobre estas.

Este es un ejemplo de diccionario:
numeros = {"uno":1, "dos":2, "tres":3, 4:"cuatro", 5:"cinco", 6:"seis"}
print( numeros["uno"] )   #1) imprime 1
print( numeros[5] )       #2) imprime cinco
print( numeros.keys() )   #3) imprime [4, 5, 6, 'dos', 'tres', 'uno']
print( numeros.values() ) #4) imprime ['cuatro', 'cinco', 'seis', 2, 3, 1]

-En el caso 1 se imprime el valor obtenido de la llave 'uno'.
-En el caso 2 se imprime el valor de la llave '5'.
-En el caso 3 se imprimen todas las llaves del diccionario.
-En el caso 4 se imprimen todos los valores del diccionario.

0 comentarios:

Publicar un comentario

top