Tengo una lista dicen:¿Cómo convertir números de cadenas a enteros en una lista?
['batting average', '306', 'ERA', '1710']
¿Cómo puedo convertir los números destinados sin tocar las cuerdas?
Gracias por la ayuda.
Tengo una lista dicen:¿Cómo convertir números de cadenas a enteros en una lista?
['batting average', '306', 'ERA', '1710']
¿Cómo puedo convertir los números destinados sin tocar las cuerdas?
Gracias por la ayuda.
changed_list = [int(f) if f.isdigit() else f for f in original_list]
Parece que los datos sabrán en qué posiciones se supone que deben estar los números. En este caso es probable que sea mejor para convertir explícitamente los datos en estas posiciones en lugar de simplemente convertir cualquier cosa que se parece a un número:
ls = ['batting average', '306', 'ERA', '1710']
ls[1] = int(ls[1])
ls[3] = int(ls[3])
Sí esta es la mejor solución para el caso estático, mientras que la de Alex es la mejor para el caso dinámico. – Unknown
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 la lista contiene flotador , cadena e int (según lo señalado por @ d.putto en el comentario)
'suma ([c.isalpha() para c en f])' es una manera bastante subóptima de verificar "si cualquier carácter en f es alfabético" - prueba 'any (c.isalpha() para c en f) 'para una mejor legibilidad y rendimiento. Por supuesto, ambos fallarán si 'f' es igual a, por ejemplo' '!' '- una cadena que no es un número pero no tiene caracteres alfanuméricos - y tampoco se puede convertir, por ejemplo,' '1.7e3'' - una cadena que contiene un carácter alfanumérico pero, sin embargo, sería perfectamente correcto pasar como argumento a 'float' (" notación exponencial "). –
cierto. buen punto ... publicado solo para responder al ejemplo artificial específico de d.putto. Debería haber pensado más antes de publicar mi respuesta medio horneada! –
Un elegante delineador. Contempla el poder de las listas de comprensión. – mkClark
estaba pensando en líneas similares – Nope
buena solución, pero ¿qué pasa si la lista también tiene valores flotantes '['promedio de bateo', '306', 'ERA', '1710.5'] ' –