2010-01-13 5 views
1

J'ai créé une liste ->Python compte des listes de sous dans la liste imbriquée

a = [[1,2,3],[4,5,6],[7,8,9]] 
  1. Comment puis-je obtenir le nombre de nombre de sous-listes dans un? Comme dans ce cas, il est 3

  2. J'utilise la chaîne d'outils itérateur pour parcourir cette liste

    for elt in itertools.chain.from_iterable(node): 
    

Est-il possible de savoir si je l'ai traversé une sous-liste?

Répondre

3

comme toute autre liste:

>>> len(a) 
3 

façon pythonique à compter les sous-listes dans une liste hétérogène serait:

>>> sum(isinstance(i, list) for i in a) 
3 

votre deuxième question n'est pas claire. Ne peux-tu pas lire ton code?

+0

Je peux lire mon code, je veux savoir quand j'ai traversé une liste de sous ... comme après éléments 1,2,3 puis après 4,5,6 – Bruce

+0

@Peter: c'est inintelligible. S'il vous plaît, posez une autre question avec des explications détaillées et un exemple de ce que vous essayez d'accomplir. – SilentGhost

0

1) len (a) est 3.

0

Le nombre de sous-listes est

len(a) 

Chaque sous-liste est un élément dans la liste, vous avez trois éléments dans un, chacun d'eux est une liste avec trois éléments (qui sont des nombres)

0

si différents types sont stockés dans une liste, vous pouvez pourrait sous-listes de cette façon:

n=0 
for b in a: 
    if type(b)==type([]): 
     n+=1 

outre:

oui, sum(1 for x in a if isinstance(x, list)) est plus pythonique

4
  1. sum(1 for x in a if isinstance(x, list))

    Cela suppose qu'il pourrait y avoir d'autres choses que les listes dans un. Non. La délégation à itertools signifie généralement que vous renoncez à tout savoir sur les valeurs sous-jacentes.

+0

mauvais code: vous devez résumer des entiers – SilentGhost

+0

Je pense que vous voulez dire "somme (1 pour x dans un si isinstance (x, liste))". Ou "len (filtre (lambda x: isinstance (x, liste), a)" d'ailleurs –

+0

Oui, corrigé maintenant. –

4

J'ai trouvé cette page dans un effort pour apprendre à obtenir la somme de toutes les sous-listes. Je me suis dit ce pourrait être fait en utilisant:

sum(len(x) for x in a) 

Peut-être que cela aiderait quelqu'un d'autre ...

+0

Cela pourrait être utile, mais cela ne répond pas à sa question. –

Questions connexes