Используйте from __future__ import division
, чтобы получить желаемое поведение. Затем, в крайнем случае, вы можете сделать что-то вроде
from __future__ import division
strings = ["0.1234", "1/2", "2/3"]
numbers = map(eval, strings)
, чтобы получить список значений из ваших строк. Если вы хотите сделать это «правильным» способом, не используйте eval()
, а вместо этого напишите функцию, которая принимает строку и вызывает float()
, если она не содержит косой черты, или анализирует строку и делит числитель и знаменатель, если в нем есть косая черта.
Один из способов сделать это:
def parse_float_string(x)
parts = x.split('/', 1)
if len(parts) == 1:
return float(x)
elif len(parts) == 2:
return float(parts[0])/float(parts[1])
else:
raise ValueError
Тогда просто map(parse_float_string, strings)
получит ваш список.