百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

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

off999 2024-09-16 00:51 145 浏览 0 评论

选自towardsdatascience

作者:Benedikt Droste

机器之心编译

参与:思

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

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

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

对于列表推导式,我们可以从列表中选择具体的元素,并做一些操作和判断,从而创建新的列表。值得注意的是,我们甚至能使用 Pandas Series 或 NumPy Array 进行列表推导操作。下面让我们具体看看列表推导是什么吧!

什么是列表推导式

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

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

# 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']
# Creating a new list for our animal doctor with all animals
animal_doctor = []
for animal in animal_park:
 animal_doctor.append(animal)

上面的代码很简单,用一个 for 循环就行,它的语义也很容易理解。如下我们可以使用列表推导式重写这一个循环:

animal_doctor = [animal for animal in animal_park]

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

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

条件语句

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

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

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

nimal_doctor = [animal for animal in animal_park if animal != 'Dog' and animal != 'Cat']

另外非常重要的一点是,列表推导式的速度非常快。如下两者都加了条件语句,但是列表推导式要比一般的循环语句快了 51%。

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

最后,如果你使用过列表推导式创建新的列表,那么你最好一直使用它,因为我们没有原因再使用标准 Python 循环。我们可以发现,只要明晰了基本概念,那么列表推导式还是非常容易使用的。

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

相关推荐

mp3转mp4格式转换器(mp3转换成mp4格式的手机软件)
mp3转mp4格式转换器(mp3转换成mp4格式的手机软件)

下载格式工厂,打开格式工厂,点音频,选择MP3,点右上角添加文件,选择要转换的MP4文件,点确定就可以了。...

2026-02-03 11:51 off999

lol盒子官方下载(英雄联盟盒子官方)

Wegame英雄联盟箱也叫LOL盒子,但现在LOL盒子已经被删除了,但是你可以放现在的盒子Wegame它被理解为英雄联盟指定插件,因为它还具有查看召唤师记录和记录各种数据、水晶复活、野生怪...

上的视频直播下载(下载现场直播视频)
  • 上的视频直播下载(下载现场直播视频)
  • 上的视频直播下载(下载现场直播视频)
  • 上的视频直播下载(下载现场直播视频)
  • 上的视频直播下载(下载现场直播视频)
微信2025最新版本官方免费下载

是的,苹果6可以继续使用微信。虽然苹果6已经不再是最新的iPhone型号,但它仍然能够支持微信的运行。只要你的苹果6上安装了最新版本的iOS系统,你就可以在上面下载和使用微信应用程序,与朋友们聊天、分...

谷歌翻译软件免费下载(谷歌翻译官方免费版)
  • 谷歌翻译软件免费下载(谷歌翻译官方免费版)
  • 谷歌翻译软件免费下载(谷歌翻译官方免费版)
  • 谷歌翻译软件免费下载(谷歌翻译官方免费版)
  • 谷歌翻译软件免费下载(谷歌翻译官方免费版)
在线音乐(在线音乐合集)

在线听音乐就是利智能手机或者电脑,其中的应用上的资源,不下载随搜随播放收听,这样的听音乐方便快捷,但是音质一般,因为手机和电脑都是软解,若是想要得到无损音质,则把曲目下载后导出手机或者电脑外,使用储卡...

滴滴注册司机车辆要求(滴滴注册司机车辆要求营运证)

以北海市为例,车辆要求如下:根据《北海市网约车管理实施细则》第十三条拟从事网约车经营的车辆,应当符合以下条件(一)七座及以下乘用车;(二)网约车经营车辆尾气排放必须达到国家规定的环保标准,发动机排量...

植物大战僵尸单机下载(单机植物大战僵尸免费版手机版)

您好,要在手机上下载并玩植物大战僵尸无尽版(Plantsvs.ZombiesEndlessVersion),可以按照以下步骤操作:1.打开手机的应用商店(如AppStore或Google...

赚钱app第一名(赚钱app第一名提现微信)
赚钱app第一名(赚钱app第一名提现微信)

比较大的公司产品就有:抖音极速版和今日头条极速版,欢迎扫码注册,注册后可以做任务赚金币,金币可以还钱,还可以提现;其他还有一些各种app,什么走路赚钱,读书赚钱等等的,不过不建议安装。头条、西瓜、抖音、快手等等都很靠谱啊,赚钱只能各凭本事了...

2026-02-03 09:51 off999

新东方英语线上课程报名(适合小学生免费学英语的软件)

新东方网上报名及支付操作流程一、登陆http://sz.xdf.cn/,进入新东方官网首页,搜索课程名称或者班号,选择适合您的课程二、进入搜课课程页面,点击【立即报名】三、去结算已选在购物车的课程四、...

应用宝一键安装(应用宝一键安装小米)
  • 应用宝一键安装(应用宝一键安装小米)
  • 应用宝一键安装(应用宝一键安装小米)
  • 应用宝一键安装(应用宝一键安装小米)
  • 应用宝一键安装(应用宝一键安装小米)
沫子漫画画免费读漫画在线观看

漫画结局就是夏沫和大少爷结婚,洛熙就在教堂听了什么后释然了,夏末还怀上了欧辰的宝宝,并且获得了最佳女主角的奖项。据文中洛熙的说法,是在第一次参加超级明星的那天晚上,在漫画第四话第28页,不过漫画上画的...

主题壁纸大全下载(好看的主题壁纸图片)

主题和壁纸有很大的区别,壁纸的话,你可以根据自己的喜好来设置你想要得到的壁纸,可以从你的相册里面挑选壁纸作为你的手机屏幕壁纸纸,但是主题的话,主题,他是属于一个系列的,当你换了手机主题之后,你的操作界...

网络电视下载什么软件看直播电视

1,饭团影视tv版  饭团影视是一款超好看的影视资源播放器软件轻松享受追剧的快感,无卡顿流畅播放,超强大的播放功能。  2,红影TV版  红影TV是一款电视点播软件,无需授权码,无需注册登录,软件完全...

如何快速学会cad制图(怎样能快速学会cad画图)

CAD可以自学啊,很简单,就是你报个班去学也就是那些简单点的东西,自学都可以搞定的,因为那些辅导班很少有教你实际的东西,大都是一些简单命令的操作。。。CAD也分好几种,机械,电气,建筑等等,你的先选好...

取消回复欢迎 发表评论: