5

Mam listę pływaków w Pythonie i kiedy przekonwertować go na sznurku, mam follwoingpyton przekonwertować listę pływaka ciąg

[1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001] 

te pływaki mają 2 cyfry po przecinku, kiedy stworzył ich (wierzę, że tak),

Następnie użyłem

str(mylist) 

Jak uzyskać ciąg z 2 cyfr po przecinku?

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

Pozwól mi być bardziej szczegółowe:

chcę dostać coś w stylu „[1883,95, 1878.33, 1869.43, 1863.40] "

Potrzebuję trochę operacji ciągów później. Na przykład + = "! \ T!"

Chcę, aby wynik końcowy był ciągiem znaków i chcę zachować separatory.

Oczywiście wszyscy wiemy, jak to zrobić w pętli, ale mam nadzieję, że ktoś może wymyślić elegancki sposób na to.

zainspirowany @senshin następujący kod działa na przykład, ale myślę, że jest lepszy sposób

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

Dzięki!

Odpowiedz

9

Użyj formatowania ciągów, aby uzyskać żądaną liczbę miejsc dziesiętnych.

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

Ciąg formatu {:.2f} oznacza „wydrukować liczbę stałych punktów (f) z dwoma miejscami po przecinku (.2)”. str.format automatycznie zaokrągli liczbę poprawnie (zakładając, że najpierw wprowadziłeś liczby z dwoma miejscami po przecinku, w którym to przypadku błąd zmiennoprzecinkowy nie wystarczy, by zadziwić się zaokrągleniem).

+0

To działa, mam [ '1883,95', '1878,33', '1869,43', '1863,40'] jednak mogę dostać coś w stylu „[1883.95 1878.33, 1869.43, 1863.40] "? Potrzebuję jakiejś operacji łańcuchowej później.Dzięki! – Niebieski

+0

@Niebieski Chcesz ciągi reprezentacji całej listy? Bardzo wątpię, że to właśnie chcesz ?, ale możesz po prostu zadzwonić' str () 'na liście, aby uzyskać coś bliskiego – senshin

+0

Chcę zrobić + ="! \ t! ", lub podobną operację – Niebieski

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

map() powołuje się na wywoływalny przekazywane w pierwszy argument każdego elementu na liście/iterowalny przekazywane jako drugi argument.

+1

Proszę podać wyjaśnienie w swojej odpowiedzi. Odpowiedzi tylko na kod rzadko pomagają ludziom uczyć się, co jest (idealnie) tym, co mamy tutaj zrobić – BradleyDotNET

+0

@Bradley Zrobione! Happy? :) Alt nie zgadzam się w pełni z tym, że "tylko przykłady kodu rzadko pomagają ludziom się uczyć". –

0

Pozbądź się 'znaków:

>>> 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]' 
  • [' {: .2f}. Format (x)”for x in Nums]
    sprawia listę ciągów, jak w przyjętym odpowiedź.
  • ',' .join ([lista]) zwraca jeden ciąg z "," wstawionym między elementy listy.
  • '[{: s}]'. Format (combined_string) dodaje nawiasy.
Powiązane problemy