Я думаю, когда вы начинаете программировать, полезно увидеть несколько примеров; и я полагаю, что вы сначала попробовали эту проблему самостоятельно!
Вот пример того, как вы могли бы подойти к этому:
contents='0.259515E+03 0.235095E+03 0.208262E+03 0.230223E+03 0.267333E+03 0.217889E+03 0.156233E+03 0.144876E+03 0.136187E+03 0.137865E+00'
Метод разделения работает со строками. Возвращает список строк. По умолчанию он разделяется на пробелы:
string_numbers=contents.split()
print(string_numbers)
# ['0.259515E+03', '0.235095E+03', '0.208262E+03', '0.230223E+03', '0.267333E+03', '0.217889E+03', '0.156233E+03', '0.144876E+03', '0.136187E+03', '0.137865E+00']
Команда map применяет свой первый аргумент (функция float
) к каждому из элементов своего второго аргумента (список string_numbers
). Функция float
преобразует каждую строку в объект с плавающей точкой.
float_numbers=map(float,string_numbers)
print(float_numbers)
# [259.51499999999999, 235.095, 208.262, 230.22300000000001, 267.33300000000003, 217.88900000000001, 156.233, 144.876, 136.18700000000001, 0.13786499999999999]
Вы можете использовать понимание списка для обработки списка, преобразуя числа меньше 1 в число 1. Условное выражение (1 if num<1 else num)
равно 1, если число меньше 1 в противном случае он равен num.
processed_numbers=[(1 if num<1 else num) for num in float_numbers]
print(processed_numbers)
# [259.51499999999999, 235.095, 208.262, 230.22300000000001, 267.33300000000003, 217.88900000000001, 156.233, 144.876, 136.18700000000001, 1]
Это то же самое, все в одной строке:
processed_numbers=[(1 if num<1 else num) for num in map(float,contents.split())]
Чтобы создать строку из элементов processed_numbers
, вы можете использовать str.join
метод :
comma_separated_string=', '.join(map(str,processed_numbers))
# '259.515, 235.095, 208.262, 230.223, 267.333, 217.889, 156.233, 144.876, 136.187, 1'