深入领略Python中的列表推导式(List Comprehensions)

列表推导式List Comprehensions在Python中凡是用于编写单行语句,这些语句通过轮回会见可迭代工具来建设新列表或字典。 本文将首先先容有关for轮回在Python中的事情道理,然后说明如安在Python中利用列表推导式。

在Python中的For轮回

Python中的for轮回语句按顺序遍历任何工具,列表,字符串等的成员。与其他编程语言对比,它的语法越发简捷,不需要手动界说迭代步调并开始迭代。 尽量有多种要领可以使其行为与其他编程语言沟通(本文不会先容)。 您还可以通过利用诸如continue,break,pass等语句对for轮回举办一些节制。以下是Python中for轮回的简朴示例:

>>> for a in range(10):
...  print(a)

上面的for轮回将打印从0到9的十个数字。

深入领略Python中的列表推导式(List Comprehensions)

列表推导式

列表推导式只不外是在一行语句中编写多行for轮回的一种简写要领。下面的列表推导式示例将建设一个新列表[0、1、2、3、4、5、6、7、8、9],个中包括所有的“a”值。

>>> numbers = [a for a in range(10)]
>>> print (numbers)

深入领略Python中的列表推导式(List Comprehensions)

请留意,列表推导式始终会建设一个新列表,而且不会修改表达式中利用的原始可迭代工具。 典范的列表推导式表达式必需具有“ for”子句,而且可今后接“ if”和“ else”条件语句。 在不利用列表推导式的环境下,以上示例将以以下方法编写:

>>> numbers = []
>>> for x in range(10):
...  numbers.append(x)
...
>>> print (numbers)

深入领略Python中的列表推导式(List Comprehensions)

机能和可读性

列表推导式比for轮回快。 可是,除非您要遍历成千上万的项目,不然您不会留意到机能上的重大改造。 尽量列表推导式为轮回编写提供了一种简捷的要领,可是巨大的表达式大概会导致代码的可读性较差和冗长。 保持代码可读性很重要,除非实现措施的绝对须要的机能是最高。

示例:对字典和荟萃利用列表推导式语法

Python字典是键-值对中界说的元素的荟萃,而荟萃是不答允反复的独一值的荟萃。列表推导式也可以与Python字典和荟萃一起利用。 语法略有差异,您此刻必需利用花括号,而不是将表达式用方括号括起来。 您还将得到一个新的字典/荟萃工具,而不是一个新的列表。

>>> data = {"linuxidc": "linuxidc.com", "linux": "python"}
>>> idc_data = {a: b.title() for a,b in data.items()}
>>> print (idc_data)

深入领略Python中的列表推导式(List Comprehensions)

假如不利用字典推导式(dictionary comprehensions),代码将如下所示:

>>> data = {"linuxidc": "linuxidc.com", "linux": "python"}
>>> idc_data = {}
>>> for a, b in data.items():
...  idc_data[a] = b.title()
...
>>> print (idc_data)
{'linuxidc': 'Linuxidc.Com', 'linux': 'Python'}

深入领略Python中的列表推导式(List Comprehensions)

由于荟萃中没有键值对,因此可以凭据与列表推导式沟通的方法界说集公道解。 独一的区别是利用花括号。

示例:列表推导式中的多个For轮回

上面提到的列表领略示例是根基的,并利用单个“ for”语句。 下面是一个利用多个for轮回和条件“ if”语句的示例。

>>> os = ["linux", "Ubuntu", "debian", "CentOS"]
>>> site = ["linuxidc", "uc", "dell", "python"]
>>> mingchen = [a + " " + b for a in os for b in site if b.startswith(a[0])]
>>> print (mingchen)

深入领略Python中的列表推导式(List Comprehensions)

该代码将显示['linux linuxidc', 'ubuntu uc', 'debian dell']作为输出。 两个for轮回遍历“os”和“sit”列表,而且两个单词的首字母沟通时,它们的成员利用空格毗连在一起。 不利用列表推导式,代码如下所示:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdjfz.html