es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encuentra la cadena de texto dentro de una lista que contiene múltiples patrones.

str_list = ['Alex is a good boy',
            'Ben is a good boy',
            'Charlie is a good boy']
matches = ['Charlie','good']

Quiero devolver el tercer elemento en str_list, porque contiene tanto ‘Charlie’ como ‘good’.

He intentado:

[s for s in str_list if all([m in s for m in matches])][0]

Pero esto me parece demasiado verboso. Por favor, una solución más elegante.


Basándonos en la respuesta y comentarios anteriores, tenemos:

next(s for s in str_list if all(m in s for m in matches))

Es obviamente más rápido (aunque mínimamente) y más ordenado.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para devolver el tercer elemento en str_list, que contiene tanto 'Charlie' como 'good', una solución más elegante sería:

    next(s for s in str_list if all(m in s for m in matches))
    

    Esto utiliza una expresión generadora y la función next() para devolver el primer elemento que cumple la condición de tener tanto 'Charlie' como 'good' en él. Es más corto y legible que la solución anterior, y también es más rápido (aunque solo marginalmente).

Comments are closed.