python - 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
解决方案
您可以使用str.format()
以科学计数法打印数字。
str.format()
在带有 ""{:e}" 作为 str 的数字上使用以科学计数法格式化数字。
要仅在小数点后包含特定位数,请使用“{:.Ne}”,其中 N 是所需的位数。
您可以在此处进一步阅读有关格式化的信息。
例如:
>>> "{: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
推荐阅读
- c# - IOS 在启动画面中不显示徽标
- logstash - logstash 时间戳日期过滤器
- go - 如何从 Windows 服务运行另一个可执行文件
- c# - DataTable 未绑定到 WPF MVVM 中的 DataGrid
- android - 无法从 Firebase 身份验证中检索所有用户的列表
- c# - ASP.NET Core 可以在运行时将对象保存在内存中吗?
- firebase - 是否有任何可能的方式使用 Facebook Api 在 React Native 2019 中向 Facebook 用户发送好友请求
- api - 使用 google trad api 进行翻译
- python - 我将如何清除/删除跨列具有重复值的行?
- linux - 使用静默运行配置时不明确的重定向