文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python 3.5 带给我们的方便的矩阵以及其他改进

2024-12-03 03:41

关注

[[403082]]

@ 操作符

@ 操作符在 Python 中是独一无二的,因为在标准库中没有任何对象可以实现它!它是为了在有矩阵的数学包中使用而添加的。

矩阵有两个乘法的概念。元素积是用 * 运算符完成的。但是矩阵组合(也被认为是乘法)需要自己的符号。它是用 @ 完成的。

例如,将一个“八转”矩阵(将轴旋转 45 度)与自身合成,就会产生一个四转矩阵。

  1. import numpy 
  2. hrt2 = 2**0.5 / 2 
  3. eighth_turn = numpy.array([ 
  4.     [hrt2, hrt2], 
  5.     [-hrt2, hrt2] 
  6. ]) 
  7. eighth_turn @ eighth_turn 
  1. array([[ 4.26642159e-17,  1.00000000e+00], 
  2.        [-1.00000000e+00, -4.26642159e-17]]) 

浮点数是不精确的,这比较难以看出。从结果中减去四转矩阵,将其平方相加,然后取其平方根,这样就比较容易检查。

这是新运算符的一个优点:特别是在复杂的公式中,代码看起来更像基础数学:

  1. almost_zero = ((eighth_turn @ eighth_turn) - numpy.array([[0, 1], [-1, 0]]))**2 
  2. round(numpy.sum(almost_zero) ** 0.5, 10) 
  1. 0.0 

参数中的多个关键词字典

Python 3.5 使得调用具有多个关键字-参数字典的函数成为可能。这意味着多个默认值的源可以与更清晰的代码”互操作“。

例如,这里有个可笑的关键字参数的函数:

  1. def show_status( 
  2.     *, 
  3.     the_good=None
  4.     the_bad=None
  5.     the_ugly=None
  6.     fistful=None
  7.     dollars=None
  8.     more=None 
  9. ): 
  10.     if the_good: 
  11.         print("Good", the_good) 
  12.     if the_bad: 
  13.         print("Bad", the_bad) 
  14.     if the_ugly: 
  15.         print("Ugly", the_ugly) 
  16.     if fistful: 
  17.         print("Fist", fistful) 
  18.     if dollars: 
  19.         print("Dollars", dollars) 
  20.     if more: 
  21.         print("More", more) 

当你在应用中调用这个函数时,有些参数是硬编码的:

  1. defaults = dict
  2.     the_good="You dig"
  3.     the_bad="I have to have respect"
  4.     the_ugly="Shoot, don't talk"

从配置文件中读取更多参数:

  1. import json 
  2. others = json.loads(""" 
  3. "fistful": "Get three coffins ready", 
  4. "dollars": "Remember me?", 
  5. "more": "It's a small world" 
  6. """) 

你可以从两个源一起调用这个函数,而不必构建一个中间字典:

  1. show_status(**defaults, **others) 
  1. Good You dig 
  2. Bad I have to have respect 
  3. Ugly Shoot, don't talk 
  4. Fist Get three coffins ready 
  5. Dollars Remember me? 
  6. More It's a small world 

os.scandir

os.scandir 函数是一种新的方法来遍历目录内容。它返回一个生成器,产生关于每个对象的丰富数据。例如,这里有一种打印目录清单的方法,在目录的末尾跟着 /:

  1. for entry in os.scandir(".git"): 
  2.     print(entry.name + ("/" if entry.is_dir() else "")) 
  1. refs/ 
  2. HEAD 
  3. logs/ 
  4. index 
  5. branches/ 
  6. config 
  7. objects/ 
  8. description 
  9. COMMIT_EDITMSG 
  10. info/ 
  11. hooks/ 

欢迎来到 2015 年

Python 3.5 在六年前就已经发布了,但是在这个版本中首次出现的一些特性非常酷,而且没有得到充分利用。如果你还没使用,那么将他们添加到你的工具箱中。

 

来源:Linux中国内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯