5

float bir listesini dönüştürmek Python içinde yüzen bir listesi var ve ben bir dizeye dönüştürmek, ben bu yüzer ondalık noktadan sonra 2 basamağa sahippiton dize

[1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001] 

follwoing olsun ben

sonra ben ondalık noktadan sonra 2 basamaklı bir dize nasıl alabilirim

str(mylist) 

kullanılan, (Öyle inanıyorum) onları yaratan?

======================

bana daha spesifik olalım:

ben gibi bir şey almak istiyorum "[1883,95, 1878.33, 1869.43, 1863.40] "

Daha sonra bazı dize işlemine ihtiyacım var. Örneğin + = "! \ T!"

Son sonucun bir dize olmasını istiyorum ve ayırıcıları tutmak istiyorum.

Elbette hepimiz bir döngüde nasıl yapılacağını biliyoruz, ama umarım birileri ona çok akıllı bir & şık bir şekilde gelebilir.

örneğin çalışır aşağıdaki kodu @senshin esinlenerek, ama daha iyi bir yolu

msg = "[" 
for x in mylist: 
    msg += '{:.2f}'.format(x)+',' 
msg = msg[0:len(msg)-1] 
msg+="]" 
print msg 

sayesinde olduğunu düşünüyorum!

cevap

9

İstenen ondalık basamak sayısını elde etmek için dize biçimlendirmesini kullanın.

>>> nums = [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001] 
>>> ['{:.2f}'.format(x) for x in nums] 
['1883.95', '1878.33', '1869.43', '1863.40'] 

biçim dizesi {:.2f} "ondalık noktasının (.2) sonra iki basamaklı sabit noktalı sayı (f) yazdırmak" anlamına gelir. str.format otomatik olarak sayıyı doğru bir şekilde tamamlar (ilk önce iki ondalık basamaklı sayıları girdiğiniz varsayılarak, bu durumda kayan nokta hatası yuvarlama ile karıştırılmaya yetmez).

+0

, ben [ '1883,95', '1878,33', '1869,43', '1863,40'] ancak, böyle bir şey alabilirim "[1883,95, 1878 aldık.33, 1869.43, 1863.40] "? Daha sonra bazı dize işlemine ihtiyacım var. Teşekkürler! – Niebieski

+0

@Niebieski Tüm listenin bir dizgisi temsilini istiyor musunuz? Bu _actually_ istediğin şeyden çok şüphe duyuyorum, ama sadece" str "diyebilirsiniz) '' yakın bir şey almak için listede – senshin

+0

Ben yapmak istiyorum + = "! \ t!", veya benzer bir işlem – Niebieski

1
map(lambda n: '%.2f'%n, [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001]) 

map() listedeki her bir elemanı için İlk bileşen olarak geçen çağrılabilir/iterable ikinci bağımsız olarak geçirilen çağırır.

+1

verir Lütfen cevabınıza bir açıklama ekleyin.Yalnızca cevaplar nadiren insanların öğrenmesine yardımcı olur, bu (ideal olarak) ne yapmak için buradayız – BradleyDotNET

+0

@Bradley Done! Happy? :) Alt “sadece kod örneklerinin nadiren insanlara öğrenmesine yardım ettiğine” tamamen katılmıyorum. –

0

kurtulun 'işaretleri:

>>> nums = [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001] 
>>> '[{:s}]'.format(', '.join(['{:.2f}'.format(x) for x in nums])) 
'[1883.95, 1878.33, 1869.43, 1863.40]' 
  • : Kabul olduğu gibi [' {.2f}. Nums for x' biçimi (x)], dizgi listesi yapar Cevap.
  • ',' .join ([liste]), liste öğeleri arasında eklenen ',' ile bir dize döndürür.
  • '[{: s}]'. Biçim (joined_string) parantezleri ekler. işleri