
Contenido
Estructuras¶
- Tipos númericos, int (> bool) (no mutable), float (no mutable), complex. 
iterable. Un objeto capaz de devolver sus miembros uno a la vez.
secuencia. Un iterable que logra un acceso eficiente a los elementos usando índices enteros.
- Tipos secuencias, list (mutable), tuple (no mutable), range. Operaciones para secuencias 
- Tipo secuencia de texto, str. 
contenedor. Un objeto que hace referencias a otros objetos (ejemplo: tuplas, listas, diccionarios)
hashable. Un objeto es hashable si tiene un valor de hash (por ejemplo: posición de los elementos de las tuplas) que nunca cambiará durante su tiempo de vida
- Tipo conjunto, set (mutable), frozenset. Un objeto de tipo conjunto o set es una colección no ordenada de distintos objetos hashables. 
- … 
- Tipo Mapeo, dict (mutable). Un objeto de tipo mapping relaciona valores (que deben ser hashable) con objetos de cualquier tipo. 
Para saber más: Solución de problemas con algoritmos y estructuras de datos usando Python
Tarea moral: ¿Qué es/hace id?, ¿Qué es/hace zip?
dir(tuple)
['__add__',
 '__class__',
 '__contains__',
 '__delattr__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getitem__',
 '__getnewargs__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__iter__',
 '__le__',
 '__len__',
 '__lt__',
 '__mul__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__rmul__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 'count',
 'index']
L = [1,2]
a = (L,3)
print(a)
L[1]= "a"
print(a)
([1, 2], 3)
([1, 'a'], 3)
dir(set)
['__and__',
 '__class__',
 '__contains__',
 '__delattr__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__iand__',
 '__init__',
 '__init_subclass__',
 '__ior__',
 '__isub__',
 '__iter__',
 '__ixor__',
 '__le__',
 '__len__',
 '__lt__',
 '__ne__',
 '__new__',
 '__or__',
 '__rand__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__ror__',
 '__rsub__',
 '__rxor__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__sub__',
 '__subclasshook__',
 '__xor__',
 'add',
 'clear',
 'copy',
 'difference',
 'difference_update',
 'discard',
 'intersection',
 'intersection_update',
 'isdisjoint',
 'issubset',
 'issuperset',
 'pop',
 'remove',
 'symmetric_difference',
 'symmetric_difference_update',
 'union',
 'update']
help(set.issubset)
Help on method_descriptor:
issubset(...)
    Report whether another set contains this set.
dir(dict)
['__class__',
 '__contains__',
 '__delattr__',
 '__delitem__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getitem__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__iter__',
 '__le__',
 '__len__',
 '__lt__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__reversed__',
 '__setattr__',
 '__setitem__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 'clear',
 'copy',
 'fromkeys',
 'get',
 'items',
 'keys',
 'pop',
 'popitem',
 'setdefault',
 'update',
 'values']
a = dict(one=1, two=2, three=3)
b = {'one': 1, 'two': 2, 'three': 3}
c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
d = dict([('two', 2), ('one', 1), ('three', 3)])
e = dict({'three': 3, 'one': 1, 'two': 2})
f = dict({'one': 1, 'three': 3}, two=2)
a == b == c == d == e == f
True
Ejemplos¶
Fracciones:
Puedes expresar una fracción como una tupla: (numerador, denominador).
a). Escribe una función que sume dos fracciones que sus argumentos sean tuplas
b). Escribe una función que multiplique dos fracciones que sus argumentos sean tuplas
Apéndice¶
Módulo: sympy¶
Existe un módulo para realizar operaciones matemáticas simbólicas: sympy
import sympy
# dir(sympy)
x = sympy.symbols('x')
f = sympy.sin(x)
fp = sympy.diff(f, x, 2)
fp.subs(x, 3)
Si queremos implementar un programa que encuentre el polinomio \(n\) de Taylor de la función \(f\) en el punto \(x_0\)
def taylor(f,x,x0,n):
    if n == 0:
        return f.subs(x, x0)
    else:
        return sympy.diff(f,x,n).subs(x,x0)/sympy.factorial(n) * (x - x0) ** n + taylor(f,x,x0,n-1)
g = sympy.exp(x)
x0 = sympy.symbols('x_0')
gt = taylor(g, x, 1, 3)
gt
p1 = sympy.plot(g, gt, xlim = (-2, 2), ylim = (-1,10), show = False)
p1.show()
 
Tambien puede resolver ecuaciones diferenciales
import sympy as sym
t = sym.symbols('t')
y = sym.Function('y')(t)
lie = y.diff(t,2) +  9*y
expr = sym.Eq(lie, sym.sin(t))
expr
sym.dsolve(expr)
Crear módulos¶
Pordemos crcear módulos para utilizarlos en diferentes programas. Existe una documentación para hacer un módulo y que este se pueda compartir con cualquier usuario (algo asi como conda install mi_modulo_que_comparti), aquí solo veremos la implemenación local. Si te interesa aprender sobre como crear módulos puedes concultar el sigeuiente enlace
import mimodulo as m
import sympy
x = sympy.symbols('x')
g = sympy.exp(x)
gt = m.taylor(g, x, 1, 3)
gt
import ipywidgets as widgets
a = widgets.IntSlider()
widgets.interact(lambda n: m.taylor(g,x,1,n), n =2)
<function __main__.<lambda>(n)>
