python系列教程160——列表解析

Posted 人工智能AI技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python系列教程160——列表解析相关的知识,希望对你有一定的参考价值。

朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

之前我们学习了,在遍历一个列表的时候,可以使用range来修改它:

>>>L = [1,2,3,4,5]


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

...    L[i] += 10

...

>>>L

[11,12,13,14,15]

但是正如我们所提到的,它可能不是Python中的优化的“最佳实践”。如今,列表解析表达式使得上面的代码变得过时了。例如,我们可以用产生所需的结果列表的一个单个表达式来替代该循环:

>>>L = [x + 10 for x in L]

>>>L

[21,22,23,24,25]

直接结果是相同的,但是它需要较少的代码,并且可能会运行的更快。列表解析并不完全和for循环语句版本相同,因为它产生一个新的列表对象。

为了在语法上进行了解,让我们更详细地剖析前面的例子:

>>>L = [x + 10 for x in L]

列表解析写在一个方括号中,因为它们最终是构建一个新的列表的一种方式。Python在解释器内部执行一个遍历L的迭代,按照顺序把x赋给每个元素,并且收集对各元素运行左边的表达式的结果。

从技术上讲,列表解析并非真的是必需的,因为我们总是可以用一个for循环手动地构建一个表达式结果的列表。然而,列表解析编写起来更加精简。此外,列表解析比手动的for循环语句运行的更快(往往速度会快一倍),因为它们的迭代在解释器内部是以C语言的速度执行的,而不是以手动Python代码执行的,特别是对于较大的数据集合,这是使用列表解析的一个主要的性能优点。

以上是关于python系列教程160——列表解析的主要内容,如果未能解决你的问题,请参考以下文章

python系列教程162——更复杂的列表解析

python系列教程153——循环修改列表

Python 系列教程 只读的列表 ——元组

教程 | 十分钟学会函数式 Python

Python 系列教程 Python的“苦力” ——列表

Python基础笔记系列三:list列表