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.

Était-ce utile?

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
scroll top