¿Cómo convertir números de cadenas a números enteros en una lista?
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.
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