<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 de Python
Tuplas, Listas, Sets, Diccionarios, Listas de comprehension, Funciones, Clases
Vamos a ver ejemplos de estrucutras de datos en Python
Tuplas
Son el tipo mas simple de estr. puede almacenar en una misma variable mas de un tipo de dato.
Step1:  Lo Malo de las tuplas es que son inmutables
Step2:  Listas
Son elementos
Step3:  Qué es ams rapido
Step4:  Atencion a los usuarios de R
Step5:  Diccionarios
En una gran cantidad de problemas, quieren almacenar claves y asignarle a cada clave un valor.
Un mejor nombre para un diccc. es un "directorio telefonico"
Step6:  Sets
son conj. matematicos
Step7:  Condicionales y Loops, For, While, If, Elif
truco para hacer loops en python es la func. range
Step8:  Clases
<ASSISTANT_TASK:>
Python Code:
x = (1,2,3,0,2,1)
x
x = (0, 'Hola', (1,2))
x[1]
Explanation: Resumen de estructuras de datos de Python
Tuplas, Listas, Sets, Diccionarios, Listas de comprehension, Funciones, Clases
Vamos a ver ejemplos de estrucutras de datos en Python
Tuplas
Son el tipo mas simple de estr. puede almacenar en una misma variable mas de un tipo de dato.
End of explanation
id(x)
x = (0, 'Cambio', (1,2))
id(x)
x
Explanation: Lo Malo de las tuplas es que son inmutables
End of explanation
x = [1,2,3]
x.append('Nuevo valor')
x
x.insert(2, 'Valor Intermedio')
x
Explanation: Listas
Son elementos
End of explanation
import timeit
timeit.timeit('x = (1,2,3,4,5,6)')
timeit.timeit('x = [1,2,3,4,5,6]')
Explanation: Qué es ams rapido: Tulpas o Listas?
End of explanation
x = [1,2,3]  # Asignacion
y = [0, x]   # Referencia
y
x[0] = -1 # Asigno otra lista a x
y         # al cambiar el valor en x se cambio en y (y apunta a x)
Explanation: Atencion a los usuarios de R: referencia o asignacion?
End of explanation
dir_tel = {'juan':5512345, 'pedro':5554321, 'itam':'is fun'}
dir_tel['juan']
dir_tel.keys()
dir_tel.values()
Explanation: Diccionarios
En una gran cantidad de problemas, quieren almacenar claves y asignarle a cada clave un valor.
Un mejor nombre para un diccc. es un "directorio telefonico"
End of explanation
A = set([1,2,3])
B = set([2,3,4])
A | B # Union
A & B # Intersección
A - B # Diferencia de conj.
A ^ B # Diferencia simetrica
Explanation: Sets
son conj. matematicos
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
truco para hacer loops en python es la func. range
End of explanation
class Person:
    def __init__(self, first, last):
        self.first = first
        self.last = last
        
    def greet(self, add_msg = ''):
        print('Hello ' + self.first + ' ' + add_msg)
juan = Person('juan', 'dominguez')
juan.first
juan.greet()
Explanation: Clases
End of explanation
<END_TASK>