不要再写Python for循环了!

3周前 (11-12 20:26)阅读1回复0
东乐
东乐
  • 管理员
  • 注册排名3
  • 经验值87740
  • 级别管理员
  • 主题17548
  • 回复0
楼主

菜学Python”,选择“星标”公家号

超等无敌干货,第一时间送达!!!

来源丨收集

各人好,我是菜鸟哥。

为什么要挑战本身在代码里不写 for loop?因为如许能够迫使你去进修利用比力高级、比力地道的语法或 library。文中以 python 为例子,讲了很多各人其其实他人的代码里都见过、但本身很少用的语法。

自从我起头摸索 Python 中惊人的语言功用已经有一段时间了。一起头,我给本身一个挑战,目标是让我操练更多的 Python 语言功用,而不是利用其他编程语言的编程经历。那让工作变得越来越有趣!代码变得越来越简洁,代码看起来愈加构造化和标准化。下面我将会介绍那些益处。

凡是如下利用场景中会用到 for 轮回:

在一个序列来提取一些信息。

从一个序列生成另一个序列。

写 for 已成习惯。

在一个序列来提取一些信息。

从一个序列生成另一个序列。

写 for 已成习惯。

幸运的是,Python 已经有良多东西能够帮忙你完成那些工做,你只需要转移你的思绪,并以差别的角度来思虑它。

通过制止编写 for 轮回,你能够获得什么益处:

较少的代码量

更好的代码可读性

更少的缩进(对 Python 仍是很有意义的)

较少的代码量

更好的代码可读性

更少的缩进(对 Python 仍是很有意义的)

我们来看一下下面的代码构造:

在那个例子中,我们正在处置多层嵌套的代码,那很难阅读。那个例子利用了多层嵌套的代码。我在那段代码中发现它无不同利用缩进把办理逻辑(with, try-except)和营业逻辑(for, if)混在一路。若是你遵守只对办理逻辑利用缩进的标准,那么核心营业逻辑应该立即离开出来。

展开全文

"扁平构造比嵌套构造更好" - The Zen of Python

能够利用的已有的东西来替代 for 轮回

1.List Comprehension / Generator 表达式

我们来看一个简单的例子。若是你想将一个数组转换为另一个数组:

若是你喜好 MapReduce,你也能够利用 map,或者 Python 中的 List Comprehension:

同样,若是您只想迭代数组中的元素,也能够利用一样的代码 Generator Expression。result = (do_something_with(item) for item in item_list)

2.函数

若是您想要将一个数组映射成别的数组,只需挪用 map 函数,就能够用一个更高级、更适用的编程体例处理那个问题。

若是要将序列削减为单个,请利用 reduce

别的,许多 Python 内置函数城市利用 iterables:

3.Extract Functions or Generators

上述两种办法是很好的处置更简单的逻辑。更复杂的逻辑怎么样?做为法式员,我们编写函数来抽离出复杂的营业。不异的设法适用于此。若是你是如许写的:

显然你对一个代码块添加了太多的责任。相反,我建议你做:

results = [process_item(item) foritem initem_list]

若是换成嵌套函数会若何

换成 List Comprehension 来实现是如许的:

若是你的代码块需要记录一些内部形态

# results = [3, 4, 6, 6, 6, 9, 9, 9, 9, 9]

我们利用 generator 来实现那一点:

a= [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]results= list(max_generator(a))

读者可能要问 “等等!你在 generator 顶用到 for 轮回,做弊啊!别急,再看看下面的代码。

不要本身写。itertools 会帮你实现了

那个模块很简单。我相信那个模块在大大都场景中能够替代你原先的 for 轮回。例如,最初一个例子能够重写为:

别的,若是要迭代组合序列,则需要利用product, permutations, combinations。

结论

在大大都情况下,您都不需要编写 for 轮回。

你应该制止编写 for 轮回,如许会有更好的代码可读性。

在大大都情况下,您都不需要编写 for 轮回。

你应该制止编写 for 轮回,如许会有更好的代码可读性。

入门: 最全的零根底学Python的问题 | 零根底学了8个月的Python |实战项目 | 学Python就是那条捷径

干货:爬取豆瓣短评,片子《后来的我们》 | 38年NBA更佳球员阐发 |从万寡等待到口碑扑街!唐探3令人绝望 | 笑看新倚天屠龙记 | 灯谜答题王 | 用Python做个海量蜜斯姐素描图 | 碟中谍那么火,我用机器进修做个迷你保举系统片子

兴趣:弹球游戏 | 九宫格 | 标致的花 | 两百行Python《天天酷跑》游戏!

AI:会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍那么火,我用机器进修做个迷你保举系统片子

小东西: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保留为pdf! |再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 造做一款钉钉低价机票提醒器! |60行代码做了一个语音壁纸切换器天天看蜜斯姐! |

年度爆款案牍

1). 卧槽!Pdf转Word用Python轻松搞定 !

2).学Python实香!我用100行代码做了个网站,帮人PS游览图片,赚个鸡腿吃

3).首播过亿,火爆全网,我阐发了《披荆斩棘的姐姐》,发现了那些奥秘

4). 80行代码!用Python做一个哆来A梦分身

5).你必需掌握的20个python代码,短小精悍,用途无限

6). 30个Python奇淫技巧集

7). 我总结的80页《菜鸟学Python精选干货.pdf》,都是干货

8). 再见Python!我要学Go了!2500字深度阐发 !

9).发现一个舔狗福利!那个Python爬虫神器太爽了,主动下载妹子图片

0
回帖

不要再写Python for循环了! 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息