首页 > 解决方案 > python中整数列表的科学记数法

问题描述

我有一个整数列表,用作图表上的标签,我需要用科学记数法表示它们。我看到的大多数其他问题都与浮点值有关,当数字类似于 23.16274586938 但我的数字范围从 2600000000 到 2900000000 并且需要将它们表示为 2.61e^8 或其他值时。我试过使用十进制,{.2E},但它们都不适合我。该列表中有大约 50k 个值,每个值大约 12 位。

我在网上找到的解决方案只有在你只有一个值时才有效。不是在迭代列表时。

我的清单看起来像

x = [5160000000000,63720000000000,326723000000000,3400000000000,...] 对于 50k 值

"{:.2e}".format(arr_of_frequencies[i])

使用这个,其中 arr_of_frequencies 是我的列表,或者这个的一些变体给了我错误

IndexError: cannot fit 'int' into an index-sized integer

标签: python

解决方案


您可以使用str.format()以科学计数法打印数字。

str.format()在带有 ""{:e}" 作为 str 的数字上使用以科学计数法格式化数字。

1

要仅在小数点后包含特定位数,请使用“{:.Ne}”,其中 N 是所需的位数。

2

您可以在此处进一步阅读有关格式化的信息。

例如:

>>> "{:e}".format(1234566723425254342)
>>> '1.234567e+18'

>>> "{:.4e}".format(123456672342525434234232)
>>> '1.2346e+23'

对于一个非常大的列表,您可以尝试使用生成器进行延迟评估转换:

>>> data = open("data.txt", 'r').read()
>>> def reverse(data):
...     for index in range(len(data)):
...             yield "{e}".format(data[index])
...
>>>
>>> for x in reverse(data):
...     print(x)

3.400000e+12
5.160000e+12
6.372000e+13
3.267230e+14
3.400000e+12
5.160000e+12
6.372000e+13
5.160000e+12
6.372000e+13
3.267230e+14
3.400000e+12
5.160000e+12
6.372000e+13
3.267230e+14
3.400000e+12
5.160000e+12
5.160000e+12
6.372000e+13
3.267230e+14
3.400000e+12
5.160000e+12
6.372000e+13
5.160000e+12
6.372000e+13
3.267230e+14
3.400000e+12
5.160000e+12
6.372000e+13
3.267230e+14
3.400000e+12
5.160000e+12
6.372000e+13
.......50000 entries worked

推荐阅读