写点什么

有哪些好玩的 Python 代码?

作者:算法的秘密
  • 2024-02-21
    浙江
  • 本文字数:910 字

    阅读完需:约 3 分钟

Python 本身就是一个万金油式的语言,它的产生就是为了弥补其他开放语言不能解决或者解决起来麻烦的事,都是可以通过 Python 找到相应的解决方案。

一切皆可盘




Python 可以做人工智能、Web 开发、服务器运维开发、数据分析、数据科学等,Python 都是可以通过pip install xxx找到相应的解决方案。


今天不讲它的具体使用库,如何使用,直接从基础的语法结构来学习下 Python 这一神奇的语言。

不能不说的小秘密


从零开始一直到一百逐次获取除于 2 后的结果?

这是一个很简单的问题,也是一个不简单的问题,因为你根本不知道它要求的时间复杂度和空间复杂度是多少?只知道让你把程序写出来,那我们就可以根据要求来书写代码。


result = []# 传统循环方式for x in range(0,100):    result.append(int(x /2)) print(result)
复制代码


代码结构很简单,定义一个空的列表 result,然后在循环 0 到 100 次,将结果依次存入到 result 列表中很高兴的提交了答案,如果返回的答案如下图。



说明你的解决是正确的。


但是你的导师说你的代码太臃肿了,可以简化下吗?这次你该如何应对呢?过了一会你想到了学过的推导式列表。


# 推导式列表ret = [int(x / 2) for x in range(0,100)]print(ret)
复制代码


这次你很高兴,代码确实精简了不少,这次导师说不出什么了吧?结果也是一样的,如下图所示。



导师笑着说不错,这次确实比上次好,但是列表消耗的资源比较高,虽然只到 100,如果到 1000、10000、100000,该如何处理?!当成你课后的作业吧!


作为程序设计者确实该这样想,那么如何设计呢?!这时你想到导师曾经讲到过的生成器。


# 生成器ret = (int(x / 2) for x in range(0,100))for y in ret:    print(y)
# 生成器yeilddef foo(): for i in range(0,100): yield i / 2for j in foo(): print(int(j))
复制代码


你会发现得到的结果也是一样的,



这次通过书写代码了解了传统式循环、推导式列表、生成器的使用,一个简单的问题,当你知识丰富的时候,会有很多优化和性能提高的处理方案。


Python 中有意思的代码片段很多,比如还有没讲到迭代器、装饰器等这些都是我们从事 Python 开发必备的技术能力。养成终身学习的习惯,你会发现以前不能解决的问题,随着知识圆圈的不断扩大,以往的难题和难点都会迎刃而解。


发布于: 36 分钟前阅读数: 5
用户头像

专注技术研究的博客,公众号“雨夜的博客” 2019-01-05 加入

一个技能开发的创业者,五年开发老鸟,自研产品,自主创业!

评论

发布
暂无评论
有哪些好玩的 Python 代码?_Python_算法的秘密_InfoQ写作社区