申请专栏作者 参展
投稿发布
您的当前位置:主页 > 数据挖掘 > 正文

迭代列表不要For循环,这是Python列表推导式最基

来源: 时间:2019-09-22
请支持本站,点击下面的广告后浏览!

如果你还在使用 For 循环迭代列表,那么你需要了解了解列表推导式,看看它的基本概念都是什么。

可思数据sykv.com

列表解析式(List comprehension)或者称为列表推导式,是 Python 中非常强大和优雅的方法。它可以基于现有的列表做一些操作,从而快速创建新列表。在我们第一次见到列表推导式时,可能会感觉这种方法非常炫酷,因此写列表推导式是非常爽的一件事。

本文来自可思数据(sykv.com),转载请联系本站及注明出处

? 可思数据-数据挖掘,智慧医疗,机器视觉,机器人sykv.com

?

本文来自可思数据(sykv.com),转载请联系本站及注明出处

如果在我们刚接触 Python 时,列表推导式可能看起来比较复杂,但是了解后会发现它非常好用。正如上图所示,列表推导式不仅可读性非常强,它所需要的代码量是最少的,它的执行速度也是最快的。

可思数据sykv.com,sykv.cn

对于列表推导式,我们可以从列表中选择具体的元素,并做一些操作和判断,从而创建新的列表。值得注意的是,我们甚至能使用 Pandas Series 或 NumPy Array 进行列表推导操作。下面让我们具体看看列表推导是什么吧! 可思数据-AI,sykv.com正版天机报图库,深度学习,机器学习,神经网络

什么是列表推导式 可思数据-数据挖掘,智慧医疗,机器视觉,机器人sykv.com

如果我们有一个列表,并希望抽取列表中的元素,那么最标准的方法是使用 Python 循环,但是我们也可以直接通过列表推导式,它只需一行代码就能搞定所有操作。当然,抽取列表元素的前提是,我们要理解列表是一种可迭代对象,它允许依次读取不同的元素。

本文来自可思数据(sykv.com),转载请联系本站及注明出处

想象一下,如果动物园中有很多不同的动物,每年每一只动物都需要定期体检,那么动物园就是列表。我们可以遍历整个动物园,并依次抽取动物,抽取的动物并不做进一步的处理,直接放到体检列表中。如下所示为一般 Python 循环的做法: 可思数据sykv.com,sykv.cn

# Creating our animal park
animal_park = ['Rabbit','Rabbit','Rabbit','Rabbit','Cat','Cat','Cat','Cat','Cat','Cat','Cat', 'Turtle','Turtle','Turtle','Turtle','Turtle','Turtle','Turtle', 'Dog','Dog', 'Kangaroo','Kangaroo','Kangaroo','Kangaroo','Kangaroo','Kangaroo']

可思数据sykv.com

# Creating a new list for our animal doctor with all animals
animal_doctor = []
for animal in animal_park:
animal_doctor.append(animal)

内容来自可思数据sykv.com

?

可思数据-数据挖掘,智慧医疗,机器视觉,机器人sykv.com

上面的代码很简单,用一个 for 循环就行,它的语义也很容易理解。如下我们可以使用列表推导式重写这一个循环: 可思数据-正版天机报图库资讯平台sykv.com

animal_doctor = [animal for animal in animal_park] 本文来自可思数据(sykv.com),转载请联系本站及注明出处

通过列表推导式,我们将代码量由三行降低到一行。如果对比两者,我们会发现它们其实是一样的,差不多都是创建、遍历和接收三部分。

可思数据-数据挖掘,智慧医疗,机器视觉,机器人sykv.com

? 可思数据sykv.com,sykv.cn

? 本文来自可思数据(sykv.com),转载请联系本站及注明出处

图1:标准循环与列表推导的对比。

可思数据-www.sykv.cn,sykv.com

条件语句

内容来自可思数据sykv.com

这样看起来列表推导式也没什么大不了,但别忘了它还能对元素做进一步操作,例如加个条件语句。在标准的列表循环中,我们的条件语句如下所示会加到 for 循环中。

可思数据sykv.com

animal_doctor = []
for animal in animal_park:
if animal != 'Dog' and animal != 'Cat':
animal_doctor.append(animal)

可思数据sykv.com,sykv.cn

? 内容来自可思数据sykv.com

在列表推导式中,我们可以将条件加到里面,用稍微长一点的单行代码完成整个流程。上面代码块可以等价地表达为: 可思数据sykv.com,sykv.cn

nimal_doctor = [animal for animal in animal_park if animal != 'Dog' and animal != 'Cat'] 可思数据sykv.com

另外非常重要的一点是,列表推导式的速度非常快。如下两者都加了条件语句,但是列表推导式要比一般的循环语句快了 51%。 可思数据-AI,sykv.com智能驾驶,人脸识别,区块链,大数据

? 可思数据-正版天机报图库资讯平台sykv.com

?

可思数据-正版天机报图库资讯平台sykv.com

图2:列表推导与标准循环二者速度的对比。

可思数据-数据挖掘,智慧医疗,机器视觉,机器人sykv.com

最后,如果你使用过列表推导式创建新的列表,那么你最好一直使用它,因为我们没有原因再使用标准 Python 循环。我们可以发现,只要明晰了基本概念,那么列表推导式还是非常容易使用的。 可思数据-AI,sykv.com智能驾驶,人脸识别,区块链,大数据

原文链接:https://towardsdatascience.com/python-list-comprehension-in-3-minutes-and-3-reasons-why-you-should-use-it-bf398654caf9

可思数据sykv.com

转发量:

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片 匿名?

关于我们?? 免责声明?? 广告合作?? 版权声明?? 联系方式?? 原创投稿?? 网站地图??

Copyright?2005-2019 Sykv.com 可思数据 版权所有 ?? ICP备案:京ICP备14056871号

正版天机报图库资讯?? 正版天机报图库资讯?? 正版天机报图库资讯?? 正版天机报图库资讯

?扫码入群
咨询反馈
扫码关注

微信公众号

返回顶部
关闭