Como el título menciona, ¿hay algún builtins para hacer este trabajo? Lo busqué en dir(list)
pero no lo usé. Gracias.¿Cómo verificar una lista contenida en otra lista sin un bucle?
Respuesta
Depende de lo que quiere decir con "contenido". Tal vez esto:
if set(a) <= set(b):
print "a is in b"
Suponiendo que desea ver si todos los elementos de sublist
son también elementos de superlist
:
all(x in superlist for x in sublist)
la solución depende de los valores que se espera de sus listas.
si existe la posibilidad de una repetición de un valor, y hay que comprobar que no hay suficientes valores en el contenedor a prueba, entonces aquí es una solución en tiempo ineficaz:
def contained(candidate, container):
temp = container[:]
try:
for v in candidate:
temp.remove(v)
return True
except ValueError:
return False
prueba de esta función con:
>>> a = [1,1,2,3]
>>> b = [1,2,3,4,5]
>>> contained(a,b)
False
>>> a = [1,2,3]
>>> contained(a,b)
True
>>> a = [1,1,2,4,4]
>>> b = [1,1,2,2,2,3,4,4,5]
>>> contained(a,b)
True
por supuesto esta solución se puede mejorar en gran medida: list.remove() es potencialmente consume mucho tiempo y se puede evitar el uso de clasificación inteligente y la indexación. pero no veo cómo evitar un bucle aquí ...
(de todos modos, cualquier otra solución será implementada utilizando conjuntos o list-comprensiones, que están usando bucles internos ...)
tarde pero impresionante. gracias por la claridad. – Young
- 1. etiquetas lista contenida por una rama
- 2. ¿Cómo ordenar una lista según otra lista?
- 3. Eliminar elementos de una lista en otra
- 4. ¿Cómo inserto una lista en otra lista en python?
- 5. Cómo hacer una nueva lista con una propiedad de un objeto que está en otra lista
- 6. En Python, ¿cómo indexo una lista con otra lista?
- 7. Clasificación de lista basada en otra lista
- 8. ¿Cómo puedo convertir una lista XML simple en una matriz de cadenas sin un bucle?
- 9. ¿Cómo buscar si un elemento de una lista está en otra lista?
- 10. Insertar una lista en otra lista en Redis
- 11. ¿Cómo hacer una lista genérica igual otra lista genérica
- 12. ¿Cómo se copia una lista vinculada a otra lista?
- 13. añadir una lista a otra lista en vb.net
- 14. ¿Agregar una lista a otra lista en java?
- 15. Ordenar una lista por otra
- 16. modificación de lista en un bucle
- 17. Crear un HashMap en Scala a partir de una lista de objetos sin bucle
- 18. LINQ: Cómo anexar lista de elementos en otra lista
- 19. ¿Cómo determinar si una lista vinculada contiene un bucle?
- 20. ¿Cómo imprimo una lista de cadenas contenidas dentro de otra lista en iReport?
- 21. Generar una lista de caracteres Unicode en un bucle for
- 22. Eliminar una lista de objetos de otra lista
- 23. Filtrar una lista por otra lista de C#
- 24. Prueba si una lista contiene otra lista con Python
- 25. Verificar si algo es una lista
- 26. Reemplazar caracteres no ASCII con una lista de cadenas definida sin un bucle en R
- 27. ¿Cómo verificar si algunos elementos están en una lista?
- 28. Seleccionar donde una entidad contiene una lista que es un subconjunto de otra lista
- 29. Python: ¿Cómo verificar una cadena para subcadenas de una lista?
- 30. Java lista sincronizada de bucle
trabajo sencillo y . Comprobaré el uso de 'set '.Gracias. – Young
Parece funcionalmente equivalente a mi solución: ¿alguien sabe si alguno tiene una ventaja de rendimiento? – Etaoin
No estoy seguro de que compre eso: la llamada a 'sub' es lineal, pero' '=' no puede ser libre. ¿Me estoy perdiendo de algo? – Etaoin