Está en la página 1de 1

HOJA DE REFERENCIA - PYTHON - SOLO LO BÁSICO

GENERAL CORTE POR TIPOS DE SECUENCIA † 4. Reversed – itera sobre los elementos de una
Distingue entre mayúsculas y minúsculas. El índice comienza † Tipos de secuencia: 'str', 'array', 'tuple', 'list', etc. secuencia en orden inverso.
desde 0. Espacios o tabulaciones para bloques de código. list1[inicio:detener]
Notación list(reversed(range(10))) # *
AYUDA list1[inicio:detener:paso] # §
* reversed() devuelve el iterador, list() lo convierte en
§ Toma cada 2 elementos list1[::2]
Página de inicio de ayuda help() una lista.
§ Invertir una cadena str1[::-1]
Ayuda de función help(str.replace)
CONTROL Y FLUJO
Ayuda de modulo help(re) NOTA: 'inicio' y 'detener' son opcionales; Incluye el
índice 'inicio', pero 'detener' NO. 1. Operadores para condiciones en 'if else':
MÓDULO (O LIBRERÍA) DICCIONARIOS (HASH MAP) Verifica si dos variables son
var1 is var2
el mismo objeto
Es simplemente un archivo con extensión .py Crear dict1 ={'clave1' :'valor1',2 :[3, 2]}
Lista contenido de modulo dir(modulo1)
. . . son objetos diferentes var1 is not var2
Crear de secuencia dict(zip(keyList, valueList)) Verifica si dos variables
Cargar un modulo import modulo1 # * var1 == var2
Obtener, Fijar o dict1['clave1'] # * tienen el mismo valor
Llamar función de modulo modulo1.func1() dict1['clave1'] = 'newValue'
Insertar elemento
* crea un nuevo espacio de nombres y ejecuta todas las Obtener con valor def dict1.get('clave1',defVal) # ** ADVERTENCIA: Utilice los operadores 'and', 'or', 'not'
declaraciones en el archivo .py asociado dentro de ese espacio de Verificar existencia 'clave1' in dict1
para condiciones compuestas, no &&, ||, !.
nombres. Si desea cargar el contenido del módulo en el espacio Eliminar elemento del dict1['clave1']
de nombres actual, use 'from module1 import *' 2. Uso común del operador 'para':
Obtener lista de claves dict1.keys() # ***
Iterando sobre una
TIPOS DE ESCALARES Obtener lista de valores dict1.values() # *** colección (lista o tupla) o for elemento in iterator:
dict1.update(dict2) un iterador
Verificar el tipo de datos: type(variable) Actualizar valores # valores dict2 a dict1 . .. Si los elementos son
secuencias, se pueden for a, b, c in iterator:
SEIS TIPOS DE DATOS DE USO COMÚN * Excepción 'KeyError' si la clave no existe. 'desempaquetar'
1. int/long* - Large int se convierte en long ** 'get()' por defecto (no 'defaultValue') devolverá 3. 'pass' - declaración de no operación. Se
2. float* - 64 bits, no hay tipo 'doble' 'None' si la clave no existe. utiliza en bloques donde no hay acciones.
3. bool* - True o False *** Devuelve las listas de claves y valores en el mismo
orden. El orden no es un orden en particular, es muy
4. Expresión ternaria - no bulliciosa 'if else'
4. str* - valor ASCII en 2.x y Unicode en 3 probable que no esté ordenado.
v=true-expr if condition else false-expr
• Entre comillas simples / dobles / triples Tipos de clave de diccionario válidos 5. Sin declaración de switch/case, use if/elif.
• Se trata como otras secuencias • Las claves deben ser inmutables como los tipos PROGRAMACIÓN ORIENTA A OBJETOS
• Carácter especial con \ o prefacio con r escalares (int, float, string) o tuples (todos los 1. 'objeto' es la raíz de todos los tipos
str1 = r'this\f?ff' objetos en la tupla también deben ser
2. Todo (número, cadena, función, clase,
inmutables)
• Formateo de varias maneras módulo, etc.) es un objeto, cada objeto
• El término técnico aquí es 'hashability',
plantilla = '%.2f %s haha $%d' compruebe si un objeto es hashable con el tiene un 'tipo'. La variable de objeto es un
str1 = plantilla % (4.88, 'hola', 2) hash ('cadena'), hash ([1, 2]); esto fallaría. puntero a su ubicación en la memoria.
* str(), bool(), int() y float() también son funciones de CONJUNTOS (SET) 3. Los objetos son contados por referencia.
conversión de tipo explícito. • Colección desordenada de elementos ÚNICOS. sys.getrefcount(5) => x
a = 5, b = a # Crea una 'referencia' al
5. NoneType(None) - valor 'nulo' (SOLO existe • Son como los diccionarios pero solo con claves. obj derecho de =, => a y b apuntan a 5
una instancia del objeto None) Crear set([3, 6, 3]) {3, 6, 3} sys.getrefcount(5) => x + 2
• None no es una palabra clave reservada, Verificar si es subconjunto set1.issubset(set2) del(a); sys.getrefcount(5) => x + 1
Verificar si es superconjunto set1.issuperset(set2)
sino una instancia única de 'NoneType' Verificar si es mismo contenido set1 == set2
4. Class – forma basica:
• None es un valor predeterminado para Unión (or) set1 | set2
class MiObjeto(object):
# 'self' es 'this' de Java/C++
argumentos de funciones opcionales: Intersección (and) set1 & set2 def __init__(self, name):
def func1(a, b, c = None) Diferencia set1 - set2 self.name = name
def miembroFunc1(self, arg1):
• Uso común de None: Diferencia simétrica (xor) set1 ^ set2
..
@staticmethod
if variable is None:
FUNCIONES def classFunc2(arg1):
6. datetime - mod. integrado "fecha y hora" Argumentos de la función se pasan por referencia. ..
brinda los tipos 'datetime', 'date', 'time'. obj1 = MiObjecto('name1')
• Forma básica obj1.miembroFunc1('a')
• 'datetime' combina 'date' y 'time' def func1(posArg1, keywordArg1 = 1, ...): MiObject.classFunc2('b')
Crea obj dt1=datetime.strptime('20200722', '%Y%m%d')
5. Útil herramienta interactiva:
Obtiene el obj dt1.date() dt1.time() NOTA: Los argumentos de palabras clave DEBEN
dir(var1) # Lista todos los métodos del obj.
datetime a cadena dt1.strftime('%m/%d/%Y %H:%M') seguir argumentos posicionales; NO es "evaluación
Cambiar val dt2 = dt1.replace(minute=0,second=30) perezosa", las expresiones se evalúan de inmediato.
OPERACIONES DE CADENA COMUNES
Obtener dif. diff=dt1-dt2 # 'datetime.timedelta' • Mecanismo de llamada de función:
Lista / tupla concatenada con ','.join(['v1','v2','v3'])
Nota: La mayoría de obj. son mutables, excepto cadenas y tuplas. 1.Las funciones son locales para el alcance del separador # => 'v1, v2, v3'
nivel del módulo. Formateo s1 = 'Mi nombre es {0} {nombre}'
ESTRUCTURAS DE DATOS ns1=s1.format('Martin',nombre='Nelbren')
NOTA: Todas las llamadas a funciones que no son Get, ej:
2.Internamente, los argumentos se empaquetan de cadena
Dividir sl1=ns1.split(' ') #=> ['Mi', 'nombre',... ]
list1.sort() son operaciones in situ (sin crear un nuevo en una tupla y dict, la función recibe una tupla ns1[1:8] # => 'i nombr'
Obtener subcadena
objeto) a menos que se indique lo contrario. 'args' y dict 'kwargs' y se desempaqueta. month = '5'
Relleno de cadena con ceros
TUPLAS • Uso común de 'Las funciones son objetos': month.zfill(2) => '05'
def func1(ops=[str.strip,user_def_func, ..], ..):
Secuencia unidimensional, de longitud fija e for function in ops: MANEJO DE EXCEPCIONES
inmutable de objetos de CUALQUIER tipo. value = function(value)
1. Forma básica
Crear tup1 = 4,5,6 tup2 = (6,7,8)
VALORES DE RETORNO try:
Crear anidada tup1 = (4, 5, 6), (7, 8) ..
• None se devuelve si se llega al final de la función except ValueError as e:
Convertir secuencia/iterator a tupla tuple([1,0, 2]) print e
sin una declaración de retorno.
Concatenar tup1 + tup2 except (TypeError, AnotherError):
• Valores múltiples regresan por UN objeto tupla. ..
Desempaquetar a, b, c = tup
except:
return (valor1, valor2)
Intercambiar variables b, a = a, b ..
valor1, valor2 = func1(..) finally:
..
LISTAS
ANONYMOUS (LAMBDA) 2. Disparar la excepción manualmente
Secuencia unidimensional, de longitud variable, raise AssertionError # Error de aserción
mutable (modificable) de objs. de CUALQUIER tipo. • Función que consiste en una sola declaración.
raise SystemExit # solicitar salida de programa
Crear list1=[1,'a',3] list2 = list(tup1) lambda x : x * 2 # def func1(x):return x * 2 raise RuntimeError('Mensaje de error: ..')

Concatenar list1 + list2 list1.extend(list2) • Aplicación de funciones lambda: 'curring', también


conocido como derivar nuevas funciones de las COMPRENSIONES LISTAS, CONJUNTOS Y DICCIONARIOS
Agregar al final de lista list1.append('b')
Insertar en posición list1.insert(posIdx, 'b') # **
existentes mediante la aplicación de args. parciales. Sintáctico para código sea más fácil de leer y escribir
Inverso insertar valueAtIdx=list1. pop(posIdx) ma60 = lambda x : pd.rolling_mean(x, 60) 1. Comprensiones de Lista
Eliminar primer valor de la lista list1.remove('a') • Forme de manera concisa una nueva lista filtrando los
FUNCIONES UTILES PARA ESTRUCTURAS DE DATOS elementos de una colección y transformando los
Verificar existencia 3 in list1 => True # ***
1. Enumerate - devuelve una secuencia (i, valor) elementos que pasan el filtro en una expresión concisa.
Ordenar list1.sort()
de tuplas donde i es índice del elemento actual. [expr for val in coleccion if condicion]
Ordenar con la función list1.sort(key = len) Un atajo de:
de usuario # ordenar por len for i, value in enumerate(coleccion):
2. Sorted - devuelve una nueva lista ordenada de resultado = []
* La concatenación usando '+' es costosa ya que se debe crear for val in coleccion:
una nueva lista y copiar los objetos. Es preferible extend(). cualquier secuencia
sorted([2, 1, 3]) => [1, 2, 3] if condicion:
** Insertar también es costoso en comparación con append.
*** Comprobar que una lista contiene un valor es mucho más
sorted(set('abc bcd')) => [' ','a','b','c','d'] resultado.append(expr)
lento que los diccionarios y conjuntos, ya que se realiza un 3. Zip – empareja elementos de listas, tuplas La condición del filtro puede omitirse, dejando la expresión.
escaneo lineal donde otros (tablas hash) en tiempo constante. u otras secuencias creando lista de tuplas: 2. Comprensiones de Diccionarios
{key-expr : val-expr for val in coleccion if condicion}
Módulo ' bisect incorporado ‡ zip(seq1, seq2) =>
3. Comprensiones de Conjuntos
• Búsqueda e inserción binarias en lista ordenada. [('seq1_1', 'seq2_1'), (..), ..]
Igual que la lista, excepto con {} en lugar de []
• 'bisect.bisect' busca la ubicación, donde • Puede tomar un número arbitrario de
secuencias. El número de elementos que 4. Compresiones de Listas anidadas
'bisect.insort' realmente se inserta en esa ubicación. [expr for val in coleccion for innerVal in val if condic]
‡ ADVERTENCIA: las funciones del módulo bisect no produce es determinado por la sec. 'más corta'.
verifican si la lista está ordenada, ya que sería muy • Iteración simultánea sobre múltiples secuencias:
costoso computacionalmente. Por lo tanto, usarlos en for i, (a, b) in enumerate(zip(seq1, seq2)): v0.0.1 – 2020-07-23 – nelbren.com
una lista no ordenada tendrá éxito sin errores, pero da • Convertir lista de filas en una lista de columnas: Presentación y adaptación por Martin Cuellar
seq1, seq2 = zip(*zipOutput)
lugar a resultados incorrectos. Original creado por Arianne Colton y Sean Chen

También podría gustarte