Je pense que lorsque vous commencez la programmation, c'est utile de voir quelques exemples; et je suppose que vous avez d'abord essayé ce problème!
Voici une cassure de la façon dont vous pouvez aborder ceci:
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'
Les split method travaux sur cordes. Il renvoie une liste de chaînes. Par défaut, il se divise sur les espaces:
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']
Le map command applique son premier argument (la fonction float
) à chacun des éléments de son second argument (la liste string_numbers
). La fonction float
convertit chaque chaîne en un objet à virgule flottante.
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]
Vous pouvez utiliser un list comprehension pour traiter la liste, la conversion des nombres inférieurs à 1 dans le numéro 1. Le conditional expression(1 if num<1 else num)
est égal à 1 lorsque num est inférieur à 1, sinon, il est égal à 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]
Ceci est la même chose, en une seule ligne:
processed_numbers=[(1 if num<1 else num) for num in map(float,contents.split())]
Pour générer une chaîne à partir des éléments de processed_numbers
, vous pouvez utiliser le str.join
method:
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'
c'est génial. J'ai passé des âges aujourd'hui se demandant pourquoi l'expression conditionnelle ne fonctionnait pas, alors réalisé que je devais mettre à niveau de 2.4 – hjp