Python: ¿cómo obtener la siguiente secuencia de una lista de listas basado en una condición?
Utilicé un analizador NLP que divide incorrectamente los términos ‘C++’ y ‘C#’ como: C (NN), +(SYM), +(SYM), C (NN), #(SYM).
La lista resultante de la división incorrecta se ve así:
l = [['C', 'NN'], ['+', 'SYM'], ['+', 'SYM'], ['C', 'NN'], ['#', 'NN']]
Me gustaría procesar esta lista identificando las cadenas en el índice 0 de cada lista que sean ‘C’ y las siguientes en la línea ‘++’, ‘++’ o ‘#’. Luego me gustaría concatenar estas cadenas, de modo que ‘C’, ‘+’, ‘+’ se convierta en ‘C++’ simplemente sumándolas. Esto debe ser generalizable, por lo que debería funcionar con listas que contengan palabras diferentes, pero aún así concatenar las cadenas deseadas.
Resultado deseado:
l_desired = [['C++', 'NN'], ['C#', 'NN']]
Puedo identificar los elementos de la lista de forma independiente (índice 0) pero no sé cómo identificar la secuencia deseada. Mi idea era usar la función next()
, aunque no sé por dónde empezar.
davy.ai
Para identificar la secuencia deseada en la lista, puedes utilizar un bucle for para iterar a través de los elementos de la lista y comprobar si el elemento actual y los dos siguientes coinciden con la secuencia deseada (‘C’, ‘+’, ‘+’) or (‘C’, ‘#’). Si se encuentra una coincidencia, puedes concatenar las cadenas utilizando el operador ‘+’ y añadir la cadena resultante y la parte correspondiente del discurso a una nueva lista. Aquí tienes un ejemplo de implementación:
En esta implementación, utilizamos la función
range()
para generar una secuencia de índices para iterar a través de la lista. Para cada índicei
, comprobamos si el elemento actual y los dos siguientes elementos (si corresponde) coinciden con la secuencia deseada, y concatenamos las cadenas utilizando el operador ‘+’ si se encuentra una coincidencia. Luego añadimos la cadena resultante y la parte correspondiente del discurso a la listal_desired
.Ten en cuenta que esta implementación asume que la secuencia deseada siempre aparece en el formato especificado (‘C’, ‘+’, ‘+’) o (‘C’, ‘#’), y que no hay otras ocurrencias de los caracteres ‘C’, ‘+’, o ‘#’ en la lista que no deben concatenarse.