2014-06-12 35 views
9

Listem var, bazen iç içe, bazen değil. İç içe olup olmadığına bağlı olarak devamlılık farklıdır. Bu listenin iç içe geçmiş olup olmadığını nasıl kontrol edebilirim? True veya False çıktısı alınmalıdır.Python bir listenin iç içe geçmiş olup olmadığını kontrol edin

örnek: ->False

[[1],[2],[3]] ->True

+1

"devamı farklı" - nasıl? Belki sadece [düzleştirmek] istersiniz (http://stackoverflow.com/questions/406121/flattening-a-shallow-list-in-python)? – georg

+0

Bunu bir "dataframe" içine yerleştiriyorum. Düz veya iç içe ise, bunun için kod farklıdır. Yuvalanmış bir listenin düzleştirilmesi, bana veriler için farklı bir yapı sağlar. Yapısını korumam gerek. – jason

cevap

25

kullanabilirsiniz isinstance ve any ile birlikte generator expression

[1,2,3]. Bu, orijinal, dış listenizdeki list nesnesinin örneklerini kontrol edecektir. any (öğesi bir liste ise bu durumda) geçerli olan bir eleman ulaşır böylece gereksiz yere bütün dış liste üzerinde yineleme sonunda yok en kısa sürede True döneceğini

In [11]: a = [1, 2, 3] 

In [12]: b = [[1], [2], [3]] 

In [13]: any(isinstance(i, list) for i in a) 
Out[13]: False 

In [14]: any(isinstance(i, list) for i in b) 
Out[14]: True 

Not.

İlgili konular