Как преобразовать числа строк в целые числа в списке? - PullRequest
12 голосов
/ 04 мая 2009

У меня есть список сказать:

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

Как я могу преобразовать нужные числа, не касаясь строк?

Спасибо за помощь.

Ответы [ 4 ]

41 голосов
/ 04 мая 2009
changed_list = [int(f) if f.isdigit() else f for f in original_list]
5 голосов
/ 04 мая 2009

Попробуйте это:

def convert( someList ):
    for item in someList:
        try:
            yield int(item)
        except ValueError:
            yield item

newList= list( convert( oldList ) )
5 голосов
/ 04 мая 2009

Данные выглядят так, как будто бы вы знаете, в каких позициях должны находиться цифры. В этом случае, вероятно, лучше явно конвертировать данные в этих позициях, а не просто конвертировать что-либо, похожее на число:

ls = ['batting average', '306', 'ERA', '1710']
ls[1] = int(ls[1])
ls[3] = int(ls[3])
0 голосов
/ 24 апреля 2015
a= ['batting average', '306', 'ERA', '1710.5']

[f if sum([c.isalpha() for c in f]) else float(f) for f in a ]

, если ваш список содержит float, string и int (как указано @ d.putto в комментарии)

...