Je liste imbriquée de la forme suivante:Liste Nested - Cordes FLOTTER
my_list = [['Some1', '2', '3.6', '4.5', 'GB2', '6'],
['Some2', '3.9', '4', '5', 'HG5', '7.3'],
['Some3', '4', '5', '6.1', 'H2D', '8.9']]
Chaque élément de chaque sous-liste est une chaîne, mais je voudrais tourner toutes les chaînes purement numériques en flotteurs.
J'essayer le code suivant:
for row in my_list:
for k, item in enumerate(row):
if k in (1, 2, 3, 5):
item = float(item)
Malheureusement, la liste imbriquée reste inchangée. Je suis sûr que je fais une erreur simple, mais je ne peux pas le voir. Toute aide (et contexte) serait appréciée.
ce qui serait considéré comme plus Pythonic dans ce cas, une boucle ou une compréhension de la liste création my_list2 comme DSM suggère? L'un ou l'autre est-il préféré? Mes listes actuelles peuvent atteindre 100 000 + lignes. – donopj2
@PatrickD: Les deux réponses font des choses différentes. Le code dans ma réponse mute la liste originale en place. Le code dans la réponse de DSM crée une nouvelle liste. Une autre différence est que le code dans ma réponse code les colonnes à convertir, et expira si une valeur ne peut pas être convertie. Le code dans la réponse de DSM essaie de convertir chaque élément et utilise la valeur à virgule flottante au lieu de la valeur d'origine si la conversion réussit. Le code dans cette réponse est plus rapide et consomme moins de mémoire, à condition que vous vouliez ces sémantiques. –