在 10 行 Python 中你能做多少数学运算?

这是Words and Buttons Online,是关于#mathematics#algorithms#programming的互动 #tutorials#demos#quizzes的集合。

开始用 Python 时,还没有NumPySymPy,过去在 MatLab 做研究,在 Delphi 快速原型开发,甚至在 Prolog 做符号计算,Python 曾像更好的 Perl,不受研究人员欢迎但写起来有趣。作者用 Python 为论文做实验并引入线性代数,逐渐深入后开始研究语言而非原主题,认为 Python 学习曲线平缓易满足于基本知识而错过精彩部分。

文章通过线性代数领域展示 Python 核心的强大:

  • 列表推导式:是 Python 单行代码的主要形式,可描述列表转换,如乘向量、字典和元组推导等,Haskell、C#等也有类似语法。
  • 列表拉链:可将多个可迭代对象组合成列表的元组,能轻松实现向量加法等操作。
  • 求和函数:可简单求和,对于浮点数可使用math.fsum获得更精确结果。
  • 条件表达式:类似三元运算符,用于根据条件创建表达式,可用于创建单位矩阵等,但因是表达式不易添加副作用,可通过元组技巧实现。
  • 传递容器内容作为参数:可通过特殊语法将列表的列表作为函数参数,实现矩阵转置等操作。
  • 矩阵乘法:将矩阵作为列表的列表,可通过列表推导式和点积实现矩阵与向量乘法,在投影几何中很重要。
  • 平面投影上的点:在计算几何中,可通过简单公式将任意点投影到平面上。
  • 列表乘法在参数中:利用列表乘法可复制列表等,用于求两点间欧氏距离等操作。
  • 旋转和线性求解器:可通过一行代码实现线性求解器,但实际应使用更好的库,求解过程通过在投影队列中旋转超平面实现。
  • 矩阵求逆:虽不是最好的求逆方法,但可通过将单位矩阵除以输入矩阵逐列求解线性方程实现。

总结:仅 10 行 Python 代码就实现了向量加法等多种操作,Python 不仅因包而强大,更是因为用 Python 编写各种代码都很有趣。

阅读 15
0 条评论