Comment convertir des nombres de chaînes en entiers dans une liste?
Question
J'ai une liste qui dit:
['batting average', '306', 'ERA', '1710']
Comment puis-je convertir les nombres souhaités sans toucher les chaînes?
Merci pour votre aide.
La solution
changed_list = [int(f) if f.isdigit() else f for f in original_list]
Autres conseils
Les données semblent indiquer que vous savez à quelles positions les nombres sont supposés être. Dans ce cas, il est probablement préférable de convertir explicitement les données à ces positions plutôt que de convertir tout ce qui ressemble à un nombre:
ls = ['batting average', '306', 'ERA', '1710']
ls[1] = int(ls[1])
ls[3] = int(ls[3])
Essayez ceci:
def convert( someList ):
for item in someList:
try:
yield int(item)
except ValueError:
yield item
newList= list( convert( oldList ) )
a= ['batting average', '306', 'ERA', '1710.5']
[f if sum([c.isalpha() for c in f]) else float(f) for f in a ]
si votre liste contient float, string et int (comme indiqué par @ d.putto dans le commentaire)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow