<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 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.
Step1:  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.
Step2:  Listas
Son elementos .....
Step3:  ¿Qué es más rapido
Step4:  Referencia / asignacion
Step5:  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"
Step6:  Sets
Conjuntos matemáticos
Step7:  Condicionales y Loops, For, While, If, Elif
Una opción para hacer loops en python es la func. range
Step8:  Clases
<ASSISTANT_TASK:>
Python Code:
x = (1,2,3,0,2,1)   # Declaración de una tupla con valores numéricos
x                   # Imprimo tupla
x = (0, 'Hola', (1,2))  # Declaración de una tupla con diferentes tipos de datos
x[1]                    # Imprimo contenido de la posición 1
Explanation: 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.
End of explanation
id(x)
x = (0, 'Cambio', (1,2))
id(x)
x
Explanation: 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.
End of explanation
x = [1,2,3]                 # Declaración de una Lista
x.append('Nuevo valor')     # Agrego nuevo contenido
x                           # Imprimo Lista completa
x.insert(2, 'Valor Intermedio')  # Inserto otro valor
x
Explanation: Listas
Son elementos .....
End of explanation
import timeit
timeit.timeit('x = (1,2,3,4,5,6)')  # Mido tiempo de ejecución de una Tupla
timeit.timeit('x = [1,2,3,4,5,6]')  # Mido tiempo de ejecución de una
Explanation: ¿Qué es más rapido: Tulpas o Listas?
End of explanation
x = [1,2,3]  # Asignación
y = [0, x]   # Referencia
y
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
Explanation: Referencia / asignacion:
End of explanation
dir_tel = {'juan':5512345, 'pedro':5554321, 'itam':'is fun'}   # Defino un diccionario
dir_tel['juan']                                                # Obtengo el valor de la clave 'juan'
dir_tel.keys()     # Obtengo el listado de las claves del dicc.
dir_tel.values()   # Obtengo el listado de los valores del dicc.
Explanation: 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)
End of explanation
A = set([1,2,3])     # Defino 2 sets
B = set([2,3,4])
A | B # Union
A & B # Intersección
A - B # Diferencia de conj.
A ^ B # Diferencia simetrica
Explanation: Sets
Conjuntos matemáticos
End of explanation
range(1000)
for i in range(5):
    print(i)
for i in range(10):
    if i % 2 == 0:
        print(str(i) + ' Par')
    else:
        print(str(i) + ' Impar')
i = 0
while i < 10:
    print(i)
    i = i + 1
Explanation: Condicionales y Loops, For, While, If, Elif
Una opción para hacer loops en python es la func. range
End of explanation
# 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)
juan = Person('juan', 'dominguez')    # Creo un objeto del tipo Person
juan.first                            # Obtengo el valor del atributo first
juan.greet()     # Ejecuto método 
Explanation: Clases
End of explanation
<END_TASK>