olacağını umut bazı örnekleri görmek yararlıdır; ve bu problemi kendi başınıza denediğinizi varsayalım! dizeleri üzerinde
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'
split method çalışır: Burada
bu yaklaşım nasıl bir bozulmasıdır. Dizelerin bir listesini döndürür. Varsayılan olarak, boşluk böler:
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 command ikinci değişken (liste string_numbers
) elemanlarının her birine ilk argüman (fonksiyon float
) uygular. float
işlevi, her dizeyi kayan nokta nesnesine dönüştürür.
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]
Sen 1 numaralı içine 1'den az sayıda dönüştürerek, listeyi işlemek için bir list comprehension kullanabilirsiniz conditional expression(1 if num<1 else num)
num, 1'den az olduğunda 1 aksi takdirde num eşittir.
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]
Bu aynı şeydir, tek satırda bütün:
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'
Bu harika. Şimdi koşullu ifadenin neden çalışmadığını merak ederek, bugün yaşlarım harcadım, daha sonra 2.4 – hjp