2010-08-24 3 views
0

Comment puis-je modifier la liste ci-dessous:modifie des éléments de la liste

[('AAA', '1-1', 1, (1.11, (2.22, 3.33))), ('BBB', '2-2', 2, (4.44, (5.55, 6.66))), ('CCC', '3-3', 3, (7, (8, 9)))] 

dans quelque chose comme ceci:

[('AAA', '1-1', 1, 1.11, 2.22, 3.33), ('BBB', '2-2', 2, 4.44, 5.55, 6.66), ('CCC', '3-3', 3, 7, 8, 9)] 

Un grand merci à l'avance.

+3

Qu'est-ce que vous avez essayé? S'il vous plaît poster un code montrant (1) ce que la «modification» est et (2) ce que vous avez essayé d'y parvenir. –

+1

Dupliquer: http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python? – cji

+0

C'est un exemple, mais pouvez-vous donner une description générale de pourquoi et comment vous modifier les tuples dans la liste? Par exemple. _Pour un tuple d'élément dans la liste, il devrait convertir/"aplatir" tous les tuples contenus dans _. Je pense que cela décrit ce que vous avez montré, mais je ne peux pas être sûr. – mctylr

Répondre

1

On dirait que vous voulez aplatir les tuples qui sont membres de la liste extérieure?

Essayez ceci:

>>> def flatten(lst): 
    return sum(([x] if not isinstance(x, (list, tuple)) else flatten(x) 
      for x in lst), []) 

>>> def modify(lst): 
    return [tuple(flatten(x)) for x in lst] 

>>> x = [('AAA', '1-1', 1, (1.11, (2.22, 3.33))), ('BBB', '2-2', 2, (4.44, (5.55, 6.66))), ('CCC', '3-3', 3, (7, (8, 9)))] 
>>> modify(x) 
[('AAA', '1-1', 1, 1.11, 2.22, 3.33), ('BBB', '2-2', 2, 4.44, 5.55, 6.66), ('CCC', '3-3', 3, 7, 8, 9)] 
>>> 

Hope it helps :-)

Questions connexes