python怎么将输入的数字变成列表_Python中的那些数字你知道了吗?(附进阶学习教程)...

Python中的数字有各种形状和形式。存在不同类型的数字表示的原因是因为它们都有不同的权衡。这些权衡通常令人惊讶!整数
关于整数的最令人惊讶的事情是它们停止成为整数的难易程度。例如,4/3将两个整数相除 得到一个浮点数,并且(4/3)*3是 float 4.0。即使程序没有浮点数输入,浮点数存在于某处所需的所有操作都是除法运算。浮点数
浮点数的行为不像数字。数字遵循某些数学特性:减法是加法的逆,加法是关联的,等等。
例如

1a8db67c63a8580f1bc868b4d4b680f8.png

将两个数字相加,然后一次相减一个,将不会得到相同的值。
他们不遵守加法的关联法则 a + (b + c) = (a + b) + c:

89e4fc418b01be43ccfb389ac4b2fcc3.png

这些仅显示浮点数出现的两个极端情况,这可能令人惊讶。关于浮点行为可能令人惊讶的方式的完整论述太大了,不足以适合此文章的空白。分数
许多看起来简单明了的算法都会用精确的分数“爆炸”。爆炸通常从时间爆炸开始:算法变成“二次方”:花费的时间与输入长度不成正比,而与输入长度的惊吓成正比。换句话说,将输入大小加倍 会花费四倍的时间。
如果花费足够的时间,内存爆炸也是可能的:空间需求增加,直到所有内存都填满。
一种防止内存爆炸的怪异方法是,通常花很长时间才能获得它,并且该程序会因“挂起”而被杀死。
一种这样的“算法”是加法。

d69c0cc86505a1ba1d4ff047eebc7763.png

这只是将反数添加到一些素数中(我从列表中删除了前几个,然后将列表切成下一个10,000)。在设计成游戏平台的笔记本电脑上,一分钟内增加10,000个数字,结果输出超过90K!
相比之下,使用浮点数运行相同的算法效率更高:

5ffc5a4b16f84b0a6f0fd70b5c3dcd0e.png

花费的时间不到一毫秒,其中一些可能是datetime以来的测量误差 。这快了大约10,000倍。输出可以保存为17个字节:空间仅减少1000。但是,结果不准确:

7a38f42150dfc3fe2c9aefbde31a4e5f.png

结果相差不到1e-14。这就像将到月球的距离弄错了1毫米。在不涉及将火箭发射到月球的公差小于一毫米(一粒沙)的情况下,浮子的结果足够精确,效率更高几个数量级。
许多响应都是基于“分数很慢,因为分数是用Python实现的”。Python可能会导致速度降低10倍,而不是10,000倍。有一个第三方模块 quicktions,它使用Cython实现分数。
使用quicktions,的确是更快。在我的笔记本电脑上,时间从一分十六秒减少到一分十五秒。
从根本上讲,问题在于这是二次算法。我仔细选择了输入:小数加法的最坏情况是在质数上。但是,除非可以预测算法的输入,否则除了最坏的情况外,你将无法依赖其他任何东西。小数点
小数在管理金融交易时很有用。出于最无聊的原因,这可能是:财务法律以小数点表示。但是,Python中的所有小数点计算都由隐藏的全局状态控制:context。上下文决定了精度,它取材于对API远距离动作有问题的漫画。
引用文档 (对于Python 3.8):

e3fcbc1703136232ae876aeaf5d60e4e.png

实际上,代码在设置精度和进行计算之间可能有数百行。计算可以在另一个函数中,甚至在另一个文件中。
在Python中使用十进制数字的唯一安全方法是 localcontext:

8fc2fc22adbb7decddae0c2d9c5e4459.png

只要小心使用 localcontext,小数就可以很好地工作。它是线程安全的和信号安全的。摘要
在对代码中的数字进行处理之前,请停下来思考。你应该使用哪种类型?你想发生什么?哪些公差很重要?
不思考意味着让代码中的极端情况发生。

进阶学习资料获取方式:私信小编 “ 学习 ”,即可免费获取!

cb2a07b0a29062131c4e13348480b384.png

0dd1d4a3d2349ba40043f9f310205ab2.png

10ecdefa97a52827d7db74802ea07b3f.png

49e35a82b83cb4051e55004796124eb3.png

9ca7be505001e0c8871f34f4f9f8853e.png

de32607fdaaaf823a35d6c6c9bba91ed.png

a3c8a25ec75ed5c5a225d689fdd0f2ca.png

fb5e238d2b4a859c33d3fafcd07fc82e.png

d7eec4cd8712d7015c61d9d2050ea9ce.png

567b9dd0f6d5a790d844e34250fe5aa3.png

2b0d51586b67ecf6e85551176fca2e45.png

12d78c8b2f8351ba0cdb440cc2371781.png

e37bc81f312467afb9f4e7d9023181c3.png

db3e962876d379f5cbba17c1bbf252e9.png

fd855153b4fdb482a415c7655d04735b.png

8153f524d8aa8bcac8ede4fc8bc950de.png

5a976434c0189aa912a773cfb554f3c6.png

370a90fa751acaa1a0106a62d304490d.png

52f3b08dfb5d06ef85b103387bf7e9e9.png

09827317aff56ac8f99d2fbc13b8f78f.png

48808a3406bba37ff8e2ec40a1a6a0ff.png

73a4b95f62b55dfa0bf5d35b23941abe.png

128f7f6b91ebc8eeb7557b2094778d59.png

502609e7e1822633c70d9b0ae9c21dcf.png

e580d1913f94402c10dc733ab3d2ef08.png

a53534c6d1f891136c607c00d40755a0.png

eb2a2f225e02d2a4f3112c1fa07ea3ae.png

80995004bce35300c5e6b0eb66e2aeca.png

69567afb8e5f839afa89ff6ef8d5a1c2.png

c7519c3110ab612d8194ede75a4fd139.png

3872b5a1d9d888895f2bd40767102175.png

de3a5af2f64b012445eb60db3230287b.png

9ff62dd0fd016ffda782e15b9643bb11.png

493a5a0ac5ebc04af322c82593f94504.png

b71dcc7529defc8c409b66bc149e1587.png

da794446e191dcc010c79e575027087e.png

09375796d5528af3c2cb7482da3b3672.png

4db82abbb1e4bd12c4c34c767c06aadd.png

dc8e00c21d51dcfa5b985cdbf088cf10.png

07b64e46819861f50e4433e579135906.png

e3016ad3393032999f55964c4e75b8e2.png

领取方式:老规矩,直接私信小编 “ 学习 ”,即可获取啦!

谢谢大家的支持!


版权声明:本文为weixin_35682009原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。