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)>