2010-07-26 14 views
26

Je suis familier avec l'utilisation enumerate():Python: Déballer une liste/tuple imbriqué intérieure tout en obtenant son numéro d'index

>>> seq_flat = ('A', 'B', 'C') 
>>> for num, entry in enumerate(seq_flat): 
     print num, entry 
0 A 
1 B 
2 C 

Je veux être en mesure de faire la même chose pour une liste imbriquée:

>>> seq_nested = (('A', 'Apple'), ('B', 'Boat'), ('C', 'Cat')) 

Je peux décompresser avec:

>>> for letter, word in seq_nested: 
     print letter, word 
A Apple 
B Boat 
C Cat 

Comment dois-je décompresser pour obtenir ce qui suit?

0 A Apple 
1 B Boat 
2 C Cat 

La seule façon que je connaisse est d'utiliser un compteur/incrémenteur, qui est non Pythonic pour autant que je sais. Y a-t-il une façon plus élégante de le faire?

+4

Pour l'anecdote, vous avez là des tuples, pas des listes. Les listes utilisent '[]', les tuples utilisent '(,)' –

Répondre

53
for i, (letter, word) in enumerate(seq_nested): 
    print i, letter, word 
+0

Les parens sont-ils obligatoires? –

+0

@MadPhysicist Oui – michaelsnowden