2012-10-02 6 views
-2

Possible en double:
How to convert strings into integers in python?Comment convertir des chaînes en ints dans une liste imbriquée?

listy = [['1', '2', '3', '4', '5'], "abc"] 

for item in listy[0]: 
    int(item) 

print listy 

Dans une liste imbriquée, comment puis-je changer tous les strings-ints? Ce qui précède me donne une sortie de:

[['1', '2', '3', '4', '5'], 'abc'] 

Pourquoi est-ce?

Merci d'avance!

+2

'int (item)' <- une valeur est calculée puis * rejetée *. Mettez-le quelque part. –

Répondre

1

Vous devez affecter les éléments reconverti dans la sous-liste (listy[0]):

listy[0][:] = [int(x) for x in listy[0]] 

Explication:

for item in listy[0]: 
    int(item) 

Les itère ci-dessus sur les éléments de la sous-liste et convertis eux à des entiers, mais il n'attribue pas le résultat de l'expression int(item) à quoi que ce soit. Par conséquent, le résultat est perdu.

[int(x) for x in listy[0]] est une compréhension de liste (sorte de raccourci pour la boucle for) que parcourt la liste, la conversion de chaque article à un nombre entier et en retournant une nouvelle liste. La nouvelle liste est ensuite renvoyée (en place, facultative) à la liste externe.

Ceci est une solution très personnalisée pour votre question spécifique. Une solution plus générale implique une récursion pour obtenir les sous-listes, et un moyen de détecter les candidats pour la conversion numérique.

+0

merci! pourriez-vous expliquer comment cette déclaration fonctionne si cela ne vous dérange pas? J'apprends juste python dans la classe – pearbear

+0

@pearbear: mis à jour avec quelques explications. – mhawke

+0

merci beaucoup! – pearbear

Questions connexes