对于list,由于她的确非常非常庞杂,在python中应用非常广泛,所以,虽然已经介绍完毕了基础内容,这里还要用一讲深入一点点,往往越深入越...

list解析

先看下面的例子,这个例子是想得到1到9的每个整数的平方,并且将结果放在list中打印出来

>>> power2 = []

>>> for i in range(1,10):

... power2.append(i*i)

...

>>> power2

[1, 4, 9, 16, 25, 36, 49, 64, 81]

python有一个非常有意思的功能,就是list解析,就是这样的:

>>> squares = [x**2 for x in range(1,10)]

>>> squares

[1, 4, 9, 16, 25, 36, 49, 64, 81]

看到这个结果,看官还不惊叹吗?这就是python,追求简洁优雅的python!

其官方文档中有这样一段描述,道出了list解析的真谛:

List comprehensions provide a concise way to create lists. Common applications are to make new lists where each element is the result of some operations applied to each member of another sequence or iterable, or to create a subsequence of those elements that satisfy a certain condition.

还记得前面一讲中的那个问题吗?

找出100以内的能够被3整除的正整数。

我们用的方法是:

aliquot = []

for n in range(1,100):

if n%3 == 0:

aliquot.append(n)

print aliquot

好了。现在用list解析重写,会是这样的:

>>> aliquot = [n for n in range(1,100) if n%3==0]

>>> aliquot

[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

震撼了。绝对牛X!

其实,不仅仅对数字组成的list,所有的都可以如此操作。请在平复了激动的心之后,默默地看下面的代码,感悟一下list解析的魅力。

>>> mybag = [' glass',' apple','green leaf '] #有的前面有空格,有的后面有空格

>>> [one.strip() for one in mybag] #去掉元素前后的空格

['glass', 'apple', 'green leaf']

enumerate

这是一个有意思的内置函数,本来我们可以通过for i in range(len(list))的方式得到一个list的每个元素编号,然后在用list[i]的方式得到该元素。如果要同时得到元素编号和元素怎么办?就是这样了:

>>> for i in range(len(week)):

... print week[i]+' is '+str(i) #注意,i是int类型,如果和前面的用+连接,必须是str类型

...

monday is 0

sunday is 1

friday is 2

python中提供了一个内置函数enumerate,能够实现类似的功能

>>> for (i,day) in enumerate(week):

... print day+' is '+str(i)

...

monday is 0

sunday is 1

friday is 2

算是一个有意思的内置函数了,主要是提供一个简单快捷的方法。

官方文档是这么说的:

Return an enumerate object. sequence must be a sequence, an iterator, or some other object which supports iteration. The next() method of the iterator returned by enumerate() returns a tuple containing a count (from start which defaults to 0) and the values obtained from iterating over sequence:

顺便抄录几个例子,供看官欣赏,最好实验一下。

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']

>>> list(enumerate(seasons))

[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

>>> list(enumerate(seasons, start=1))

[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

在这里有类似(0,'Spring')这样的东西,这是另外一种数据类型,待后面详解。

python简单入门深学难_[零基础学Python]再深点,更懂list相关推荐

  1. Python和C语言哪个难?零基础学哪个好?

    Python和C语言哪个难?零基础学哪个好?Python上手简单有交互性强的开发环境,还有众多的第三方库,学习起来会比C/C++容易的多.C过于底层强在内存操作,功能实现起来却十分复杂并不适合新手作为 ...

  2. python从入门到精通需要多久--零基础学Python,从入门到精通需要多长时间

    求一份小甲鱼的<零基础入门学习Python>视频教程 评论 本系列教程面向础的同学,是一个深入浅通俗易懂的Python3视频教程. 适群 完全零基础入门,不需要任何前置知识. 教程概述 前 ...

  3. python编程需要安装什么软件_[零基础学pythyon]安装python编程环境

    注:推荐一种非常重要的学习方法 在我这里看文章的零基础朋友,乃至于非零基础的朋友,不要希望在这里学到很多高深的python语言技巧. "靠,那看你胡扯吗?" 非也.重要的是学会一些 ...

  4. python后端开发学什么_零基础学Python,这是阿里Python8年开发经验写给你的学习路线图...

    今天给大家分享一位前辈整理的一个Python web学习路线.这位前辈由于有编程基础,所以采用了自学Python的方式.学完后主要做后端开发.希望对你有所启发. 整理的一个 python web 学习 ...

  5. python从爬虫到数据分析项目_零基础学习Python web开发、Python爬虫、Python数据分析,从基础到项目实战!...

    随着大数据和人工智能的发展,目前Python语言的上升趋势比较明显,而且由于Python语言简单易学,所以不少初学者往往也会选择Python作为入门语言. Python语言目前是IT行业内应用最为广泛 ...

  6. python基于水色图像的水质评价_零基础学习Python的学习路线及教程

    什么是Python? 在过去的2017年里,Python开发者在全球快速增长,国内小伙伴学习 Python 的热情一路高涨.同时,PYPL发布7月编程语言指数榜,Python 在今年5月首次超越 Ja ...

  7. 3d量测怎么学距离_零基础学3D建模,学什么软件,怎么学习,去哪里学习,我告诉你...

    想学3D建模该从何开始 我简短的说一下软件和怎么学习吧 从零基础开始学习,这篇回答会对你们很有帮助 回答包括了软件介绍和软件学习视频资源(全文一共2400字,阅读需要十分钟) 首先如果是零基础的话,建 ...

  8. python赋值语句的一般格式为_[零基础学Python]赋值,简单也不简单

    变量命名 在<初识永远强大的函数>一文中,有一节专门讨论"取名字的学问",就是有关变量名称的问题,本温故而知新的原则,这里要复习: 名称格式:(下划线或者字母)+(任意 ...

  9. python中字符串的制表符为_零基础学python_03_字符串(拼接+换行+制表符)

    字符串拼接 在编码的过程很多时候都会用到字符串的拼接,例如,你可能想将姓和名存储在不同的变量中,等要显示姓名时再将它们合而为一:first_name = "li" last_nam ...

最新文章

  1. BIM技术在各阶段应用的软件你知多少?
  2. 前端面试instanceof_面试造火箭,看下这些大厂原题
  3. 【H264码流分析】 SPS/PPS/Slice Header
  4. ECCV 2020 | 自监督任务辅助的知识蒸馏
  5. 更新Android SDK之后Eclipse提示ADT版本过低的一个简易解决办法
  6. 分层结构的生活例子_AI的分层强化学习与人脑神经机制的联系
  7. 立即释放.net下的com组件
  8. 烽火电信光猫语音鉴权密码及超级密码获取方法
  9. photoshop CS5免费破解完整版下载,详细安装教程,无需注册【PS序列号】
  10. 已有的事,后必再有。已行的事,后必再行。
  11. 计算机硬盘没内存怎么办,电脑内存不够用怎么办
  12. fiilt1左耳连不上_FIIL T1完美解决真无线耳机的痛点:更快更稳更自由
  13. 牛客练习赛63 C.牛牛的揠苗助长
  14. 我用Three.js创作游戏(一)
  15. 镜播无人直播带货教程,手把手教你如何搭建直播间
  16. Signal Processing投稿经历
  17. 【机器学习】图像语义分割常用指标Dice系数 敏感性 特异性 IOU及python代码实现
  18. python求excel平均值_python帮助计算excel文件上的平均值和std
  19. 看清OMA DRM文件的本质
  20. 表示自己从头开始的句子_形容“从头开始”的诗句有哪些?

热门文章

  1. 计算机二级关系代数运算知识点,计算机二级:关系代数运算.doc
  2. Eclipse clearcase plugin
  3. win10下的VS2017安装MPI
  4. 网页控制台控制视频倍速
  5. Nette框架未授权任意代码执行漏洞分析
  6. C++ strcpy strcpy_s strncpy strlcpy
  7. 极致CMS百度智能小程序前后端源码
  8. App/QoE-Based Congestion control
  9. dz邮箱验证怎么设置_详细步骤!Discuz如何设置通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)实现论坛邮箱验证功能...
  10. C++类外写构造函数实现编译报错:definition of implicitly-decleared ‘函数名’