Dada la lista ['a','ab','abc','bac']
, quiero calcular una lista con cadenas que tengan 'ab'
en ellas. Es decir. el resultado es ['ab','abc']
. ¿Cómo se puede hacer esto en Python?Filtrar una lista de cadenas según el contenido
Respuesta
Este simple filtrado se puede lograr de muchas maneras con Python. El mejor enfoque es el uso de "listas por comprensión" de la siguiente manera:
>>> lst = ['a', 'ab', 'abc', 'bac']
>>> res = [k for k in lst if 'ab' in k]
>>> res
['ab', 'abc']
>>>
Otra forma es utilizar la función filter
:
>>> filter(lambda k: 'ab' in k, lst)
['ab', 'abc']
>>>
-1: Lambda. Por favor, no inflija lambda en n00bs. –
@ S.Lott: ¿por qué? ¿Qué hay de malo en aprender temas útiles de programación avanzada en un contexto adecuado? –
@Edi Bendersky: ¿Porque son más confusos que útiles? ¿Porque lleva a preguntas que son respondidas por "use a def"? ¿Porque rara vez lleva a algo mejor que el código de golf? No sé, me parecen inútiles, después de 30 años de programación en una amplia variedad de idiomas. Pero supongo que son realmente importantes para ti. –
[x for x in L if 'ab' in x]
usted gana por 48 segundos :-) –
intentado hacer esto rápidamente en el intérprete de comandos interactivo:
>>> l = ['a', 'ab', 'abc', 'bac']
>>> [x for x in l if 'ab' in x]
['ab', 'abc']
>>>
Por qué funciona esto? Porque el in
operator se define para que las cadenas signifiquen: "es una subcadena de".
Además, es posible que desee considerar escribir el bucle en lugar de utilizar el list comprehension syntax utilizado anteriormente:
l = ['a', 'ab', 'abc', 'bac']
result = []
for s in l:
if 'ab' in s:
result.append(s)
mylist = ['a', 'ab', 'abc']
assert 'ab' in mylist
# To support matches from the beginning, not any matches:
list = ['a', 'ab', 'abc', 'bac']
prefix = 'ab'
filter(lambda x: x.startswith(prefix), list)
- 1. Prólogo: ¿Filtrar una lista?
- 2. Cómo filtrar un diccionario según una función de condición arbitraria?
- 3. filtrar una lista utilizando LINQ
- 4. ¿Cómo ordenar una lista según otra lista?
- 5. Actualizo el estilo de edición de UITableViewCell según el contenido
- 6. Dimensionamiento SmartGWT Ventana según el contenido
- 7. ¿Cuál es la manera más rápida de filtrar una lista de cadenas al hacer una lista de Intellisense/Autocomplete?
- 8. filtrar una lista de Python predicado
- 9. Makefile: Filtrar cadenas que contienen un carácter
- 10. Filtrar una lista por otra lista de C#
- 11. Cómo filtrar una lista de cadenas que coincidan con un patrón
- 12. Cómo filtrar la lista usando Predicado
- 13. Haskell: filtrar una lista heterogénea por tipo
- 14. jQuery selector: búsqueda de celda de tabla según el contenido
- 15. Filtrar lista grande en el lado del cliente
- 16. ¿Cómo cambiar el tamaño de WebView según su contenido?
- 17. ¿Cómo cambiar el tamaño de NSTextView según su contenido?
- 18. jQuery: Ordenar div según el contenido de diferentes subdivisiones
- 19. Eliminar cadenas vacías de una lista de cadenas
- 20. Erlang: aplanamiento de una lista de cadenas
- 21. Filtrar máx. 20 valores de una lista de enteros
- 22. Powershell: filtro de lista de cadenas
- 23. Funciones de proceso de una lista de cadenas en Python
- 24. Establezca el fondo de un DataGridRow según el contenido de una celda
- 25. Lambda Expresión para filtrar una lista de elementos
- 26. ¿Cómo puedo filtrar elementos de una lista en Python?
- 27. Lista de cadenas a una cadena
- 28. Búsqueda aproximada contra una lista de cadenas
- 29. Eliminar el prefijo de una lista de cadenas
- 30. DropDownListFor - muestra una lista simple de cadenas
gracias Eli Bendersky –
Dada la lista [' a ',' b ',' c ',' a ',' b '], quiero calcular una lista con cadenas que tengan' a 'y' b 'en ellas. Es decir. el resultado es ['a', 'b']. ¿Cómo se puede hacer esto en Python? –