Pregunta

Tengo una lista que dice:

['batting average', '306', 'ERA', '1710']

¿Cómo puedo convertir los números deseados sin tocar las cadenas?

Gracias por la ayuda.

¿Fue útil?

Solución

changed_list = [int(f) if f.isdigit() else f for f in original_list]

Otros consejos

Parece que los datos sabrían en qué posiciones se supone que deben estar los números. En este caso, probablemente sea mejor convertir explícitamente los datos en estas posiciones en lugar de simplemente convertir cualquier cosa que parezca un número:

ls = ['batting average', '306', 'ERA', '1710']
ls[1] = int(ls[1])
ls[3] = int(ls[3])

Prueba esto:

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 su lista contiene float, string e int (como se indica en @ d.putto en el comentario)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top