Ответ 1
changed_list = [int(f) if f.isdigit() else f for f in original_list]
У меня есть список:
['batting average', '306', 'ERA', '1710']
Как я могу преобразовать назначенные числа, не касаясь строк?
Спасибо за помощь.
changed_list = [int(f) if f.isdigit() else f for f in original_list]
Данные выглядят так, как вы знаете, в каких позициях должны быть номера. В этом случае, вероятно, лучше явно преобразовать данные в эти позиции, а не просто преобразовывать все, что выглядит как число:
ls = ['batting average', '306', 'ERA', '1710']
ls[1] = int(ls[1])
ls[3] = int(ls[3])
Попробуйте следующее:
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 ]
если ваш список содержит float, string и int (как указано в @d.putto в комментарии)