2011-03-09 25 views
15

si tengo una lista, ¿hay alguna manera de verificar si contiene otras listas?determinar si una lista contiene otras listas

lo que quiero decir es, yo quiero saber si una lista tiene esta strcuture: [] en contraposición a esta estructura [[]]

así, comparo [1,2,3,4] a [1, [ 2,3], 4]

esto se complica por el hecho de que tengo una lista de cadenas.

bien, la solución de phihag parece estar funcionando hasta ahora, pero lo que estoy haciendo es la siguiente:

uniqueCrossTabs = list(itertools.chain.from_iterable(uniqueCrossTabs)) 

con el fin de aplanar una lista si tiene otras listas en ella. Pero como mi lista contiene cadenas, si esto se hace en una lista ya aplanada, obtengo una lista de cada carácter de cada cadena que estaba en la lista original. Este no es el comportamiento que estaba buscando. por lo tanto, verifique si la lista necesita aplanarse antes de proceder al aplanamiento.

+0

'si A tiene otra contiene lists' y' comparar ... to' son mutuamente excluyentes. Le sugiero que haga otra pregunta sobre cómo comparar listas aplastadas o sublistas. Si no está seguro acerca de la redacción, proporcione como 5 ejemplos de comparaciones con diferentes resultados. – phihag

Respuesta

67
any(isinstance(el, list) for el in input_list) 
+2

¡Respuesta muy elegante, phihag! Merecido +1. – slezica

+1

¡Excelente respuesta! –

-4
lst1 in lst2 

Yields True iff lst1 is in lst2.

+2

Tenga en cuenta que la verificación de contención en una lista usa igualdad, no identidad. –

4

que puede tomar la respuesta de phihag aún más si en realidad quieres una lista de todas las listas dentro de la lista:

output_list = filter(lambda x: isinstance(x,list), input_list) 
Cuestiones relacionadas