Pergunta

Eu tenho uma lista digamos:

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

Como posso converter os números pretendidos sem tocar as cordas?

Obrigado pela ajuda.

Foi útil?

Solução

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

Outras dicas

Os olhares de dados como você saberia em que as posições que os números são suposto ser. Neste caso, é provavelmente melhor para explicitamente converter os dados para estas posições, em vez de apenas converter qualquer coisa que se parece com um número:

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

Tente isto:

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 ]

Se a sua lista contém float, string e int (como pontas sobre por @ d.putto no comentário)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top