Resumen de estructuras de datos en Python

Tuplas, Listas, Sets, Diccionarios, Listas de comprehension, Funciones, Clases

Definición y ejemplos de algunas estructuras de datos en Python

Tuplas

Son el tipo mas simple de estr. que puede almacenar en una misma variable más de un tipo de dato.


In [1]:
x = (1,2,3,0,2,1)   # Declaración de una tupla con valores numéricos
x                   # Imprimo tupla


Out[1]:
(1, 2, 3, 0, 2, 1)

In [2]:
x = (0, 'Hola', (1,2))  # Declaración de una tupla con diferentes tipos de datos
x[1]                    # Imprimo contenido de la posición 1


Out[2]:
'Hola'

Las tuplas son inmutables.

Si intento cambiar el valor de una posición, genera error.
Si asingo otra tupla a la misma variable, genera otro ID.


In [3]:
id(x)


Out[3]:
4531381448

In [4]:
x = (0, 'Cambio', (1,2))
id(x)


Out[4]:
4531407680

In [5]:
x


Out[5]:
(0, 'Cambio', (1, 2))

Listas

Son elementos .....


In [6]:
x = [1,2,3]                 # Declaración de una Lista
x.append('Nuevo valor')     # Agrego nuevo contenido
x                           # Imprimo Lista completa


Out[6]:
[1, 2, 3, 'Nuevo valor']

In [7]:
x.insert(2, 'Valor Intermedio')  # Inserto otro valor
x


Out[7]:
[1, 2, 'Valor Intermedio', 3, 'Nuevo valor']

¿Qué es más rapido: Tulpas o Listas?


In [8]:
import timeit
timeit.timeit('x = (1,2,3,4,5,6)')  # Mido tiempo de ejecución de una Tupla


Out[8]:
0.021909315000812057

In [9]:
timeit.timeit('x = [1,2,3,4,5,6]')  # Mido tiempo de ejecución de una


Out[9]:
0.11750903199936147

Referencia / asignacion:


In [10]:
x = [1,2,3]  # Asignación
y = [0, x]   # Referencia
y


Out[10]:
[0, [1, 2, 3]]

In [11]:
x[0] = -1    # Asigno otra lista a x
y            # al cambiar el valor en x se cambio en y debido a que y apunta a x


Out[11]:
[0, [-1, 2, 3]]

 Diccionarios

En una gran cantidad de problemas se requieren almacenar claves y asignarle a cada clave un valor.
Un ejemplo paar un dicc. podría ser un "directorio telefonico": (nombre : nro_tel)


In [12]:
dir_tel = {'juan':5512345, 'pedro':5554321, 'itam':'is fun'}   # Defino un diccionario
dir_tel['juan']                                                # Obtengo el valor de la clave 'juan'


Out[12]:
5512345

In [13]:
dir_tel.keys()     # Obtengo el listado de las claves del dicc.


Out[13]:
dict_keys(['juan', 'pedro', 'itam'])

In [14]:
dir_tel.values()   # Obtengo el listado de los valores del dicc.


Out[14]:
dict_values([5512345, 5554321, 'is fun'])

Sets

Conjuntos matemáticos


In [15]:
A = set([1,2,3])     # Defino 2 sets
B = set([2,3,4])

In [16]:
A | B # Union


Out[16]:
{1, 2, 3, 4}

In [17]:
A & B # Intersección


Out[17]:
{2, 3}

In [18]:
A - B # Diferencia de conj.


Out[18]:
{1}

In [19]:
A ^ B # Diferencia simetrica


Out[19]:
{1, 4}

Condicionales y Loops, For, While, If, Elif

Una opción para hacer loops en python es la func. range


In [20]:
range(1000)


Out[20]:
range(0, 1000)

In [21]:
for i in range(5):
    print(i)


0
1
2
3
4

In [22]:
for i in range(10):
    if i % 2 == 0:
        print(str(i) + ' Par')
    else:
        print(str(i) + ' Impar')


0 Par
1 Impar
2 Par
3 Impar
4 Par
5 Impar
6 Par
7 Impar
8 Par
9 Impar

In [23]:
i = 0
while i < 10:
    print(i)
    i = i + 1


0
1
2
3
4
5
6
7
8
9

Clases


In [24]:
# Definición de clase:
class Person:                            
    def __init__(self, first, last):   # Constructor
        self.first = first
        self.last = last
        
    def greet(self, add_msg = ''):     # Método
        print('Hello ' + self.first + ' ' + add_msg)

In [25]:
juan = Person('juan', 'dominguez')    # Creo un objeto del tipo Person
juan.first                            # Obtengo el valor del atributo first


Out[25]:
'juan'

In [26]:
juan.greet()     # Ejecuto método


Hello juan