1. ProgrammingPythonCómo usar las funciones de Lambda en Python

Por Alan Shovic, John Shovic

Python admite el concepto de funciones anónimas, también llamadas funciones lambda. La parte anónima del nombre se basa en el hecho de que la función no necesita tener un nombre (pero puede tener uno si así lo desea). La parte lambda se basa en el uso de la palabra clave lambda para definirlos en Python. Lambda es también la undécima letra del alfabeto griego.

Pero la razón principal por la que el nombre se usa en Python es porque el término lambda se usa para describir funciones anónimas en el cálculo. Ahora que lo hemos aclarado, puede usar esta información para iniciar una conversación fascinante en las fiestas de la oficina.

La sintaxis mínima para definir una expresión lambda (sin nombre) con Python es:

Argumentos de Lambda: expresión

Al usarlo:

  • Reemplace los argumentos con datos que se pasan a la expresión. Reemplace la expresión con una expresión (fórmula) que defina lo que desea que devuelva el lambda.

Un ejemplo bastante común de uso de esa sintaxis es cuando intenta ordenar cadenas de texto donde algunos de los nombres comienzan con letras mayúsculas y otros comienzan con letras minúsculas, como en estos nombres:

Adams, Ma, diMeola, Zandusky

Supongamos que escribe el siguiente código para poner los nombres en una lista, ordenarlos y luego imprimir la lista, así:

nombres = ['Adams', 'Ma', 'diMeola', 'Zandusky']
nombres.sort ()
imprimir (nombres)

Esa salida de esto es:

['Adams', 'Ma', 'Zandusky', 'diMeola']

Hacer que diMeola venga después de Zandusky parece estar mal para algunos principiantes. Pero las computadoras no siempre ven las cosas como nosotros. (En realidad, no "ven" nada porque no tienen ojos ni cerebro ... pero eso no viene al caso). La razón por la que diMeola viene después de Zandusky es porque el tipo se basa en ASCII, que es un sistema en el que cada El carácter está representado por un número.

Todas las letras minúsculas tienen números que son más altos que los mayúsculas. Entonces, al ordenar, todas las palabras que comienzan con letras minúsculas van después de las palabras que comienzan con una letra mayúscula. Si nada más, al menos garantiza un hmm menor.

Para ayudar con estos asuntos, el método sort () de Python le permite incluir una clave = expresión dentro de los paréntesis, donde puede decirle cómo ordenar. La sintaxis es:

.sort (clave = transformar)

La parte de transformación es una variación de los datos que se ordenan. Si tiene suerte y una de las funciones integradas como len (para la longitud) funcionará para usted, puede usarla en lugar de la transformación, así:

nombres.sort (clave = len)

Desafortunadamente para nosotros, la longitud de la cadena no ayuda con la alfabetización. Entonces, cuando ejecuta eso, el orden resulta ser:

['Ma', 'Adams', 'diMeola', 'Zandusky']

El orden va de la cadena más corta (la que tiene menos caracteres) a la cadena más larga. No es útil por el momento.

No puede escribir key = lower o key = upper para basar la ordenación en todas las letras minúsculas o mayúsculas tampoco, porque lower y upper no son funciones integradas (que puede verificar bastante rápido buscando en Google python 3.7 incorporado) funciones).

En lugar de una función incorporada, puede usar una función personalizada que se defina usando def. Por ejemplo, puede crear una función llamada lower () que acepte una cadena y la devuelva con todas sus letras convertidas a minúsculas. Aquí está la función:

def inferior (anystring):
"" "Convierte la cadena a minúsculas" ""
return anystring.lower ()

El nombre inferior está compuesto, y anystring es un marcador de posición para cualquier cadena que le pase en el futuro. El retorno anystring.lower () devuelve esa cadena convertida a minúsculas usando el método .lower () del objeto str (string). (Lea sobre los métodos de cadena de Python para obtener más información).

No puede usar key = lower en los paréntesis sort () porque lower () no es una función incorporada. Es un método ... no es lo mismo. Un poco molesto con todas estas palabras de moda.

Supongamos que escribe esta función en una celda Jupyter o en un archivo .py. Luego llama a la función con algo como print (minúscula ('Zandusky')). Lo que obtienes como salida es esa cadena convertida a minúsculas, como ves a continuación.

función personalizada lower () en Python

Bien, ahora tiene una función personalizada para convertir cualquier cadena a todas las letras minúsculas. ¿Cómo se usa eso como una clave de clasificación? Fácil, use key = transform igual que antes, pero reemplace transform con el nombre de su función personalizada. La función se denomina minúscula, por lo que usaría .sort (clave = minúscula), como se muestra a continuación:

def minúscula (anystring):
"" "Convierte la cadena a minúsculas" ""
return anystring.lower ()
 
nombres = ['Adams', 'Ma', 'diMeola', 'Zandusky']
nombres.sort (clave = minúscula)

La ejecución de este código para mostrar la lista de nombres los coloca en el orden correcto, ya que se basa en la ordenación de cadenas que están en minúsculas. La salida es la misma que antes porque solo la clasificación, que tuvo lugar detrás de escena, usaba letras minúsculas. Los datos originales todavía están en sus letras mayúsculas y minúsculas originales.

'Adams', 'diMeola', 'Ma', 'Zandusky'

Si aún está despierto y consciente después de leer todo esto, puede estar pensando: "Bien, resolvió el problema de clasificación. Pero pensé que estábamos hablando de funciones lambda aquí. ¿Dónde está la función lambda? ”Todavía no hay una función lambda.

Pero este es un ejemplo perfecto de dónde podría usar una función lambda, porque la función Python que está llamando, minúscula (), hace todo su trabajo con una sola línea de código: return anystring.lower ().

Cuando su función puede hacer lo suyo con una simple expresión de una línea como esa, puede omitir la definición y el nombre de la función y simplemente usar esta sintaxis:

parámetros lambda: expresión

Reemplace los parámetros con uno o más nombres de parámetros que usted mismo cree (los nombres dentro de los paréntesis después de def y el nombre de la función en una función regular). Reemplace la expresión con lo que desea que devuelva la función sin la palabra return. Entonces, en este ejemplo, la clave, usando una expresión lambda, sería:

lambda anystring: anystring.lower ()

Ahora puede ver por qué es una función anónima. Se ha eliminado toda la primera línea con el nombre de la función minúscula (). Entonces, la ventaja de usar la expresión lambda es que ni siquiera necesita la función personalizada externa. Solo necesita el parámetro seguido de dos puntos y una expresión que le indique qué devolver.

La siguiente imagen muestra el código completo y el resultado de ejecutarlo. Obtiene el orden de clasificación adecuado sin la necesidad de una función externa del cliente como minúscula (). Simplemente usa anystring: anystring.lower () (después de la palabra lambda) como la clave de clasificación.

Python lambda expresión

Agreguemos también que anystring es un nombre de parámetro más largo que el que usarían la mayoría de los Pythonistas. A las personas de Python les gustan los nombres cortos, incluso los nombres de una letra. Por ejemplo, podría reemplazar una cadena de caracteres con s (o cualquier otra letra), como se muestra a continuación, y el código funcionará exactamente igual:

nombres = ['Adams', 'Ma', 'diMeola', 'Zandusky']
nombres.sort (clave = lambda s: s.lower ())
imprimir (nombres)

Al principio de esta diatriba, se mencionó que una función lambda no tiene que ser anónima. Puede darles nombres y llamarlos como lo haría con otras funciones.

Por ejemplo, aquí hay una función lambda denominada moneda que toma cualquier número y devuelve una cadena en formato de moneda (es decir, con un signo de dólar inicial, comas entre miles y dos dígitos por centavos):

moneda = lambda n: f "$ {n:,. 2f}"

Aquí hay un porcentaje con nombre que multiplica cualquier número que le envíe por 100 y lo muestra con dos signos de porcentaje al final:

porcentaje = lambda n: f "{n: .2%}"

La siguiente imagen muestra ejemplos de ambas funciones definidas en la parte superior de una celda Jupyter. Luego, algunas declaraciones de impresión llaman a las funciones por su nombre y les pasan algunos datos de muestra. Cada declaración print () muestra el número en el formato deseado.

Números de formato de Python

La razón por la que puede definirlos como lambdas de una sola línea es porque puede hacer todo el trabajo en una línea, f "$ {n:,. 2f}" para la primera y f "{n: .2%}" para el segundo. Pero el hecho de que pueda hacerlo de esa manera no significa que deba hacerlo. También puede usar funciones regulares, de la siguiente manera:

# Mostrar número en formato de moneda.
def moneda (n):
devuelve f "$ {n:,. 2f}"
 
def por ciento (n):
# Mostrar número en formato de porcentaje.
devuelve f "{n: .2%}"

Con esta sintaxis más larga, también podría pasar más información. Por ejemplo, puede usar un formato alineado a la derecha dentro de un cierto ancho (digamos 15 caracteres) para que todos los números salgan alineados a la derecha con el mismo ancho. La imagen muestra esta variación en las dos funciones.

Ancho fijo de la función de formateo de Python

En la imagen de arriba, el segundo parámetro es opcional y su valor predeterminado es 15 si se omite. Entonces, si lo llamas así:

imprimir (moneda (9999))

... obtienes un relleno de $ 9,999.00 con suficientes espacios a la izquierda para que tenga 15 caracteres de ancho. Si en su lugar lo llamas así:

imprimir (moneda (9999,20)

... todavía obtienes $ 9,999.00 pero acolchado con suficientes espacios a la izquierda para que tenga 20 caracteres de ancho.

El .ljust () utilizado anteriormente es un método de cadena incorporado de Python que rellena el lado izquierdo de una cadena con espacios suficientes para que tenga el ancho especificado. También hay un método rjust () para rellenar el lado derecho. También puede especificar un carácter que no sea un espacio. Google python 3 solo necesita si necesita más información.

Ahí lo tienes, la capacidad de crear tus propias funciones personalizadas en Python. En la vida real, lo que quiere hacer es, cada vez que descubra que necesita acceder al mismo fragmento de código, el mismo bit de inicio de sesión, una y otra vez en su aplicación, no simplemente copie / pegue ese fragmento de código código una y otra vez. En su lugar, coloque todo ese código en una función a la que pueda llamar por su nombre.

De esa manera, si decide cambiar el código de cadena de Python, no tiene que buscar en su aplicación para encontrar todos los lugares que deben cambiarse. Simplemente cámbielo en la función donde está todo definido en un solo lugar.

  1. ProgrammingPythonCómo definir y usar listas de Python

Por Alan Shovic, John Shovic

La recopilación de datos más simple en Python es una lista. Una lista es cualquier lista de elementos de datos, separados por comas, entre corchetes. Por lo general, asigna un nombre a la lista de Python usando un signo =, tal como lo haría con las variables. Si la lista contiene números, no utilice comillas a su alrededor. Por ejemplo, aquí hay una lista de resultados de exámenes:

puntajes = [88, 92, 78, 90, 98, 84]

Si la lista contiene cadenas, entonces, como siempre, esas cadenas deben estar entre comillas simples o dobles, como en este ejemplo:

Para mostrar el contenido de una lista en la pantalla, puede imprimirla tal como imprimiría cualquier variable regular. Por ejemplo, ejecutar print (alumnos) en su código después de definir esa lista muestra esto en la pantalla.

['Mark', 'Amber', 'Todd', 'Anita', 'Sandy']

Esto puede no ser exactamente lo que tenía en mente. Pero no se preocupe, Python ofrece muchas formas excelentes de acceder a los datos en listas y mostrarlos como desee.

Hacer referencia a elementos de la lista de Python por posición

Cada elemento de una lista tiene un número de posición, que comienza con cero, aunque no vea ningún número. Puede hacer referencia a cualquier elemento de la lista por su número utilizando el nombre de la lista seguido de un número entre corchetes. En otras palabras, use esta sintaxis:

nombre de lista [x]

Reemplace listname con el nombre de la lista a la que está accediendo y reemplace x con el número de posición del elemento que desea. Recuerde, el primer elemento siempre es el número cero, no uno. Por ejemplo, en la primera línea a continuación, defino una lista llamada estudiantes y luego imprimo el elemento número cero de esa lista. El resultado, al ejecutar el código, es que se muestra el nombre Mark.
estudiantes = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
imprimir (estudiantes [0])
marca

Al leer los elementos de la lista de acceso, los profesionales usan la palabra sub antes del número. Por ejemplo, los estudiantes [0] se hablarían como estudiantes bajo cero.

El siguiente ejemplo muestra una lista llamada puntajes. La función print () imprime el número de posición del último puntaje en la lista, que es 4 (porque el primero siempre es cero).

puntajes = [88, 92, 78, 90, 84]
imprimir (puntajes [4])
84

Si intenta acceder a un elemento de la lista que no existe, obtendrá un error de "índice fuera de rango". La parte del índice es una referencia al número dentro de los corchetes. Por ejemplo, la imagen a continuación muestra un pequeño experimento en un cuaderno Jupyter donde se creó una lista de puntuaciones y luego se intentó imprimir la puntuación [5].

Falló y generó un error porque no hay puntajes [5]. Solo hay puntajes [0], puntajes [1], puntajes [2], puntajes [3] y puntajes [4] porque el conteo siempre comienza en cero con el primero en la lista.

Rango de índice de Python

Recorriendo una lista de Python

Para acceder a cada elemento de una lista, solo use un bucle for con esta sintaxis:

para x en la lista:

Reemplace x con un nombre de variable de su elección. Reemplazar lista con el nombre de la lista. Una manera fácil de hacer que el código sea legible es usar siempre un plural para el nombre de la lista (como estudiantes, puntajes). Luego puede usar el nombre singular (estudiante, puntaje) para el nombre de la variable. Tampoco necesita usar números de subíndice (números entre corchetes) con este enfoque. Por ejemplo, el siguiente código imprime cada puntaje en la lista de puntajes:

para puntaje en puntajes:
imprimir (puntaje)

Recuerde siempre sangrar el código que se ejecutará dentro del bucle. Esta imagen muestra un ejemplo más completo donde puedes ver el resultado de ejecutar el código en un cuaderno Jupyter.

Recorriendo una lista de Python

Ver si una lista de Python contiene un elemento

Si desea que su código verifique el contenido de una lista para ver si ya contiene algún elemento, utilícelo en listname en una declaración if o una asignación variable.

Por ejemplo, el código en la imagen a continuación crea una lista de nombres. Luego, dos variables almacenan los resultados de buscar en la lista los nombres de Anita y Bob. La impresión del contenido de cada variable muestra True para aquel en el que el nombre (Anita) está en la lista. La prueba para ver si Bob está en la lista es Falso.

Ver si un elemento está en una lista de Python

Obtener la longitud de una lista de Python

Para determinar cuántos elementos hay en una lista, use la función len () (abreviatura de longitud). Ponga el nombre de la lista dentro de los paréntesis. Por ejemplo, escriba el siguiente código en un cuaderno Jupyter o en el indicador de Python o lo que sea:

estudiantes = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
imprimir (len (estudiantes))

Ejecutar ese código produce esta salida:

5 5

De hecho, hay cinco elementos en la lista, aunque el último siempre es uno menos que el número porque Python comienza a contar en cero. Así que el último, Sandy, en realidad se refiere a estudiantes [4] y no a estudiantes [5].

Agregar un elemento al final de una lista de Python

Cuando desee que su código de Python agregue un nuevo elemento al final de una lista, use el método .append () con el valor que desea agregar dentro de los paréntesis. Puede usar un nombre de variable o un valor literal dentro de las comillas.

Por ejemplo, en la siguiente imagen, la línea que lee students.append ("Goober") agrega el nombre Goober a la lista. La línea que lee students.append (new_student) agrega cualquier nombre almacenado en la variable llamada new_student a la lista. El método .append () siempre se agrega al final de la lista. Entonces, cuando imprime la lista, ve esos dos nuevos nombres al final.

Lista de anexos de Python

Puede usar una prueba para ver si un elemento está en una lista y luego agregarlo solo cuando el elemento no esté allí. Por ejemplo, el siguiente código no agregará el nombre Amber a la lista porque ese nombre ya está en la lista:

student_name = "Amanda"

#Agregar nombre_alumno pero solo si aún no está en la lista.
if student_name en estudiantes:
    print (student_name + "ya en la lista")
más:
    students.append (nombre_alumno)
    print (nombre_alumno + "agregado a la lista")

Insertar un elemento en una lista de Python

Aunque el método append () le permite agregar un elemento al final de una lista, el método insert () le permite agregar un elemento a la lista en cualquier posición. La sintaxis para insert () es

listname.insert (posición, elemento)

Reemplace listname con el nombre de la lista, posición con la posición en la que desea insertar el elemento (por ejemplo, 0 para convertirlo en el primer elemento, 1 para convertirlo en el segundo elemento, etc.). Reemplace el elemento con el valor, o el nombre de una variable que contiene el valor, que desea poner en la lista.

Por ejemplo, el siguiente código convierte a Lupe en el primer elemento de la lista:

#Cree una lista de cadenas (nombres).
estudiantes = ["Mark", "Amber", "Todd", "Anita", "Sandy"]

student_name = "Lupe"
# Agregue el nombre del alumno al principio de la lista.
students.insert (0, nombre_alumno)

# Muéstrame la nueva lista.
imprimir (estudiantes)

Si ejecuta el código, print (estudiantes) mostrará la lista después de insertar el nuevo nombre, de la siguiente manera:

['Lupe', 'Mark', 'Amber', 'Todd', 'Anita', 'Sandy']

Cambiar un elemento en una lista de Python

Puede cambiar un elemento en una lista usando el operador de asignación = (vea estos operadores comunes de Python) tal como lo hace con las variables. Solo asegúrese de incluir el número de índice entre corchetes del elemento que desea cambiar. La sintaxis es:

listname [index] = newvalue

Reemplace listname con el nombre de la lista; reemplace el índice con el subíndice (número de índice) del elemento que desea cambiar; y reemplace newvalue con lo que quiera poner en el elemento de la lista. Por ejemplo, eche un vistazo a este código:

#Cree una lista de cadenas (nombres).
estudiantes = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
estudiantes [3] = "Hobart"
imprimir (estudiantes)

Cuando ejecuta este código, el resultado es el siguiente, porque el nombre de Anita se ha cambiado a Hobart.

['Mark', 'Amber', 'Todd', 'Hobart', 'Sandy']

Combinando listas de Python

Si tiene dos listas que desea combinar en una sola lista, use la función extend () con la sintaxis:

original_list.extend (adicional_items_list)

En su código, reemplace original_list con el nombre de la lista a la que agregará nuevos elementos de la lista. Reemplace adicional_lista_de_elementos con el nombre de la lista que contiene los elementos que desea agregar a la primera lista. Aquí hay un ejemplo simple usando listas llamadas list1 y list2. Después de ejecutar list1.extend (list2), la primera lista contiene los elementos de ambas listas, como puede ver en el resultado de la instrucción print () al final.

# Crear dos listas de nombres.
list1 = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
list2 = ["Huey", "Dewey", "Louie", "Nader", "Bubba"]

# Añadir list2 nombres a list1.
list1.extend (list2)

# Imprimir lista 1.
imprimir (lista1)

['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake', 'Huey', 'Dewey', 'Louie', 'Nader', 'Bubba']

Parchís fácil, ¿no?

Eliminar elementos de la lista de Python

Python ofrece un método remove () para que pueda eliminar cualquier valor de la lista. Si el elemento está en la lista varias veces, solo se elimina la primera aparición. Por ejemplo, el siguiente código muestra una lista de letras con la letra C repetida varias veces. Luego, el código usa letters.remove ("C") para eliminar la letra C de la lista:

# Eliminar "C" de la lista.
letras.remove ("C")

# Muéstrame la nueva lista.
imprimir (letras)

Cuando realmente ejecute este código y luego imprima la lista, verá que solo se ha eliminado la primera letra C:

['A', 'B', 'D', 'C', 'E', 'C']

Si necesita eliminar todo un elemento, puede usar un ciclo while para repetir .remove siempre que el elemento permanezca en la lista. Por ejemplo, este código repite el .remove mientras la "C" todavía esté en la lista.

#Cree una lista de cadenas.
letras = ["A", "B", "C", "D", "C", "E", "C"]

Si desea eliminar un elemento en función de su posición en la lista, use pop () con un número de índice en lugar de eliminar () con un valor. Si desea eliminar el último elemento de la lista, use pop () sin un número de índice.

Por ejemplo, el siguiente código crea una lista, una línea elimina el primer elemento (0) y otra elimina el último elemento (pop () sin paréntesis). La impresión de la lista muestra que esos dos elementos se han eliminado:

#Cree una lista de cadenas.
letras = ["A", "B", "C", "D", "E", "F", "G"]
 
# Retire el primer elemento.
letras.pop (0)
# Retire el último elemento.
letters.pop ()
 
# Muéstrame la nueva lista.
imprimir (letras)

Ejecutar el código muestra que el popping del primer y último elemento sí funcionó:

['B', 'C', 'D', 'E', 'F']

Cuando saca () un elemento de la lista, puede almacenar una copia de ese valor en alguna variable. Por ejemplo, esta imagen muestra el mismo código que el anterior. Sin embargo, almacena copias de lo que se ha eliminado en variables llamadas first_removed y last_removed. Al final, imprime la lista de Python y también muestra qué letras se eliminaron.

eliminar elementos de la lista de Python

Python también ofrece un comando del (abreviatura para eliminar) que elimina cualquier elemento de una lista en función de su número de índice (posición). Pero de nuevo, debes recordar que el primer elemento es cero. Entonces, supongamos que ejecuta el siguiente código para eliminar el elemento número 2 de la lista:

# Crear una lista de cadenas.
letras = ["A", "B", "C", "D", "E", "F", "G"]
 
# Eliminar elemento sub 2.
del cartas [2]
 
imprimir (letras)

Ejecutar ese código muestra la lista nuevamente, de la siguiente manera. Se ha eliminado la letra C, que es el elemento correcto para eliminar porque las letras están numeradas 0, 1, 2, 3, y así sucesivamente.

['A', 'B', 'D', 'E', 'F', 'G']

También puede usar del para eliminar una lista completa. Simplemente no use los corchetes ni el número de índice. Por ejemplo, el código que ve a continuación crea una lista y luego la elimina. Intentar imprimir la lista después de la eliminación causa un error, porque la lista ya no existe cuando se ejecuta la instrucción print ().

eliminar la lista de Python

Borrar una lista de Python

Si desea eliminar el contenido de una lista pero no la lista en sí, use .clear (). La lista todavía existe; sin embargo, no contiene elementos. En otras palabras, es una lista vacía. El siguiente código muestra cómo podría probar esto. La ejecución del código muestra [] al final, lo que le permite saber que la lista está vacía:

# Crear una lista de cadenas.
letras = ["A", "B", "C", "D", "E", "F", "G"]
 
# Borrar la lista de todas las entradas.
letters.clear ()
 
# Muéstrame la nueva lista.
imprimir (letras)

[]

Contando cuántas veces aparece un elemento en una lista de Python

Puede usar el método Python count () para contar cuántas veces aparece un elemento en una lista. Al igual que con otros métodos de lista, la sintaxis es simple:

listname.count (x)

Reemplace listname con el nombre de su lista, y x con el valor que está buscando (o el nombre de una variable que contiene ese valor).

El código en la imagen a continuación cuenta cuántas veces aparece la letra B en la lista, usando un B literal dentro del paréntesis de .count (). Este mismo código también cuenta el número de calificaciones de C, pero ese valor se almacenó en una variable solo para mostrar la diferencia en la sintaxis. Ambos recuentos funcionaron, como puede ver en la salida del programa en la parte inferior. Se agregó uno para contar los F‘s, sin usar ninguna variable. Las F se contaron directamente en el código que muestra el mensaje. No hay calificaciones F, por lo que esto devuelve cero, como puede ver en la salida.

contar elementos de la lista de Python

Cuando intente combinar números y cadenas para formar un mensaje, recuerde que debe convertir los números en cadenas usando la función str (). De lo contrario, obtendrá un error que dice que algo como solo puede concatenar str (no "int") a str. En ese mensaje, int es la abreviatura de entero y str es la abreviatura de cadena.

Encontrar el índice de un elemento de la lista de Python

Python ofrece un método .index () que devuelve un número que indica la posición, basada en el número de índice, de un elemento en una lista. La sintaxis es:

listname.index (x)

Como siempre, reemplace listname con el nombre de la lista que desea buscar. Reemplace x lo que sea que esté buscando (ya sea como literal o como nombre de variable, como siempre). Por supuesto, no hay garantía de que el artículo esté en la lista, e incluso si lo está, no hay garantía de que el artículo esté en la lista solo una vez. Si el elemento no está en la lista, se produce un error. Si el elemento está en la lista varias veces, se devuelve el índice del primer elemento coincidente.

La siguiente imagen muestra un ejemplo en el que el programa se bloquea en la línea f_index = grade.index (look_for) porque no hay F en la lista.

Índice de elementos de la lista de Python

Una manera fácil de solucionar ese problema es usar una instrucción if para ver si un elemento está en la lista antes de intentar obtener su número de índice. Si el elemento no está en la lista, muestre un mensaje que lo indique. De lo contrario, obtenga el número de índice y muéstrelo en un mensaje. Ese código es el siguiente:

# Crear una lista de cadenas.
grados = ["C", "B", "A", "D", "C", "B", "C"]
# Decide qué buscar
look_for = "F"
# Ver si el artículo está en la lista.
si busca en grados:
    # Si está en la lista, obtenga y muestre el índice.
    print (str (look_for) + "está en el índice" + str (grade.index (look_for)))
más:
    # Si no está en la lista, ni siquiera intente el número de índice.
    print (str (look_for) + "no está en la lista")

Alfabetizar y ordenar listas de Python

Python ofrece un método sort () para ordenar listas. En su forma más simple, ordena alfabéticamente los elementos de la lista (si son cadenas). Si la lista contiene números, se ordenan de menor a mayor. Para un tipo simple como ese, solo use sort () con paréntesis vacíos:

listname.sort ()

Reemplace listname con el nombre de su lista. La siguiente imagen muestra un ejemplo usando una lista de cadenas y una lista de números. En el ejemplo, se creó una nueva lista para cada uno de ellos simplemente asignando cada lista ordenada a un nuevo nombre de lista. Luego, el código imprime el contenido de cada lista ordenada.

ordenar lista de Python

Si su lista contiene cadenas con una combinación de letras mayúsculas y minúsculas, y si los resultados del ordenamiento no se ven bien, intente reemplazar .sort () con .sort (key = lambda s: s.lower ()) y luego ejecutando el código nuevamente.

Las fechas son un poco más complicadas porque no puedes simplemente escribirlas como cadenas, como "31/12/2020". Deben ser el tipo de datos de fecha para ordenar correctamente. Esto significa usar el módulo datetime y el método date () para definir cada fecha. Puede agregar las fechas a la lista como lo haría con cualquier otra lista. Por ejemplo, en la siguiente línea, el código crea una lista de cuatro fechas, y el código está perfectamente bien.

fechas = [dt.date (2020,12,31), dt.date (2019,1,31), dt.date (2018,2,28), dt.date (2020,1,1)]

Ciertamente, a la computadora no le importará si crea la lista de esta manera. Pero si desea que el código sea más legible para usted u otros desarrolladores, es posible que desee crear y agregar cada fecha, una a la vez, por lo que es un poco más fácil ver lo que está sucediendo y no tener lidiar con tantas comas en una línea de código. La imagen a continuación muestra un ejemplo donde se creó una lista vacía llamada datelist:

datelist = []
mostrar fechas en Python

Luego, se agregó una fecha a la vez a la lista utilizando la sintaxis dt.date (año, mes, día).

Después de crear la lista, el código usa datelist.sort () para ordenarlos en orden cronológico (de más temprano a más reciente). No necesita usar print (datelist) en ese código porque ese método muestra las fechas con la información del tipo de datos incluida, como esta:

[datetime.date (2018, 2, 28), datetime.date (2019, 1, 31), datetime.date (2020, 1, 1), datetime.date (2020, 12, 31)]

No es la lista más fácil de leer. Entonces, en lugar de imprimir la lista completa con una declaración print (), puede recorrer cada fecha en la lista e imprimir cada una formateada con la cadena f% m /% d /% Y. Esto muestra cada fecha en su propia línea en formato mm / dd / aaaa

Si desea ordenar los elementos en orden inverso, ponga reverse = True dentro de los paréntesis sort () (y no olvide poner la primera letra en mayúscula). La imagen a continuación muestra ejemplos de cómo ordenar las tres listas en orden descendente (inverso) usando reverse = True.

ordenar información en la lista de Python en reversa

Revertir una lista de Python

También puede invertir el orden de los elementos en una lista utilizando el método .reverse. Esto no es lo mismo que ordenar en reversa, porque cuando ordena en reversa, todavía ordena: Z – A para cadenas, de mayor a menor para números, más reciente a más temprano para fechas. Cuando invierte una lista, simplemente invierte los elementos de la lista, sin importar su orden, sin intentar ordenarlos de ninguna manera.

El siguiente código muestra un ejemplo en el que invierte el orden de los nombres en la lista y luego imprime la lista. La salida muestra los elementos de la lista invertidos de su orden original:

# Crear una lista de cadenas.
nombres = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
# Invertir la lista
names.reverse ()
# Imprimir la lista
imprimir (nombres)
 
['Jake', 'Alberto', 'Hong', 'Lupe', 'Zara']

Copiar una lista de Python

Si alguna vez necesita trabajar con una copia de una lista, use el método .copy () para no alterar la lista original. Por ejemplo, el siguiente código es similar al código anterior, excepto que en lugar de invertir el orden de la lista original, hace una copia de la lista y la invierte. La impresión del contenido de cada lista muestra cómo la primera lista todavía está en el orden original, mientras que la segunda se invierte:

# Crear una lista de cadenas.
nombres = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
 
# Haga una copia de la lista
backward_names = names.copy ()
# Invierta la copia
backward_names.reverse ()
 
# Imprimir la lista
imprimir (nombres)
print (backward_names)
 
['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake']
['Jake', 'Alberto', 'Hong', 'Lupe', 'Zara']

Para futuras referencias, la siguiente tabla resume los métodos que aprendió.