Evita estos 5 errores
al programar en Python
Eleva el nivel de tu código:
de principiante a medio/alto en minutos
[Link] por Juan Monroy
1
No iteres por los elementos de una lista usando
índices (muy habitual si vienes de otro lenguaje)
No hagas for sobre range para
la longitud de la lista...
lista = [10, 20, 30, 40, 50]
lista = [10, 20, 30, 40, 50] for elemento in lista:
print(elemento)
for indice in range(len(lista)):
print(lista[indice])
El propio for te proporciona
un elemento en cada iteración
[Link]
2
No concatenes cadenas de texto con el
operador + (es una operación lenta y costosa)
No construyas una cadena final concatenando
cada una de las cadenas individuales
cadenas = ['hola', 'soy', 'juan']
cadenas = ['hola', 'soy', 'juan']
resultado = '' resultado = ' '.join(cadenas)
for cadena in cadenas:
resultado += cadena + ' '
Usa el operador de join
de la clase str
[Link]
3
No abras y cierres “manualmente” los
ficheros para leer o escribir en ellos
Es necesario cerrar los ficheros después
de leer y escribir, pero debes hacerlo
explícitamente y puedes olvidarte
with open('[Link]') as fichero:
fichero = open('[Link]') datos = [Link]()
datos = [Link]()
[Link]() Usa el gestor de contexto with
que cerrará el fichero pot ti
[Link]
4
No recorras los valores de un diccionario
accediendo a partir de la iteración de sus claves
Si iteras un diccionario con for dicc = {1: 'uno', 2: 'dos', 3: 'tres'}
obtendrás sus claves
for clave, valor in [Link]():
print(clave, valor)
dicc = {1: 'uno', 2: 'dos', 3: 'tres'}
for clave in dicc:
Usa el método items de dict que proporciona
print(clave, dicc[clave])
una vista con pares clave-valor
[Link]
5
No construyas listas a partir de iterables
y haciendo append en un bucle estándar
Esto obliga a crear la lista vacía antes
y a escribir código innecesario
numeros = [4, 7, 9, 11, 12, 17]
numeros = [4, 7, 9, 11, 12, 17]
cuadrados = [n**2 for n in numeros if n % 2 != 0]
cuadrados = []
for n in numeros:
if n % 2 != 0:
[Link](n**2) Usa una list comprehension en una sola línea,
más legible y más eficiente, puro estilo Python
[Link]