简体   繁体   中英

Convert a list of float to string in Python

I have a list of floats in Python and when I convert it into a string, I get the following

[1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001]

These floats have 2 digits after the decimal point when I created them (I believe so),

Then I used

str(mylist)

How do I get a string with 2 digits after the decimal point?

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

Let me be more specific, I want the end result to be a string and I want to keep the separators:

"[1883.95, 1878.33, 1869.43, 1863.40]"

I need to do some string operations afterwards. For example +=" \t " .

Inspired by @senshin the following code works for example, but I think there is a better way

msg = "["

for x in mylist:
    msg += '{:.2f}'.format(x)+','

msg = msg[0:len(msg)-1]
msg+="]"
print msg

Use string formatting to get the desired number of decimal places.

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

The format string {:.2f} means "print a fixed-point number ( f ) with two places after the decimal point ( .2 )". str.format will automatically round the number correctly (assuming you entered the numbers with two decimal places in the first place, in which case the floating-point error won't be enough to mess with the rounding).

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

map()为作为第二个参数传递的列表/迭代中的每个元素调用第一个参数中传递的可调用对象。

如果您想保持完全精度,语法上最简单/最清晰的方法似乎是

mylist = list(map(str, mylist))

Get rid of the ' marks:

>>> 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] makes a list of strings, as in the accepted answer.
  • ', '.join([list]) returns one string with ', ' inserted between the list elements.
  • '[{:s}]'.format(joined_string) adds the brackets.
str([round(i, 2) for i in mylist])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM