分享Python中超级好用的三种解析式!
来源:投稿 作者:Fairy
编辑:学姐
Python中的解析式(comprehension)是一种简单的语法结构,它可以从可迭代对象中生成新的序列、集合或字典。其中最常见的三种解析式分别是列表解析式、字典解析式和集合解析式。这种方式可以让我们用更简单、更易读的语法快速地生成数据结构,提高代码效率。
列表解析式
列表解析式通常用于从一个可迭代对象(例如列表、元组等)中快速创建一个新的列表。它的语法与for循环类似,可以带有条件语句。使用列表解析式能够让我们更加简洁地表达对可迭代对象的操作,同时提高代码的可读性和效率。
1. 基本形式
expression为每个元素要执行的操作,可以是任何有效的 Python 表达式。
item 是从可迭代对象中依次读取的每个元素。
iterable 是被迭代的对象。
下面我们来看一个例子:
这段代码的含义是使用列表解析式生成一个包含0到9的整数列表,并将其赋值给new_list变量。其中,range(10)返回一个包含0到9的整数序列,for x in range(10)表示遍历序列中的每个整数,并将其赋值给变量x。在列表解析式的中括号内,我们可以指定对每个x所执行的操作,本例中只是简单地将x放入新列表中。最终,打印输出new_list。

2. 带if条件
expression为每个元素要执行的操作,可以是任何有效的 Python 表达式。
item 是从可迭代对象中依次读取的每个元素。
iterable 是被迭代的对象。
condition 是可选的,如果提供,则是对元素进行过滤的条件。
下面我们来看一个例子:
这段代码的含义是通过列表解析式从一个给定的列表my_list中生成一个新的列表new_list,新列表包含my_list中所有偶数元素。
在列表解析式的中括号内,我们首先使用for循环语句遍历my_list中的每个元素,并将其赋值给变量x。if语句,我们可以限制将哪些元素添加到新列表中。这个案例中,if语句指定只有当x是偶数时才将其添加到新列表new_list中。

3. 嵌套循环
expression为每个元素要执行的操作,可以是任何有效的 Python 表达式。
item 是从可迭代对象中依次读取的每个元素。
iterable 是被迭代的对象。
下面我们来看一个例子:
这段代码的含义是通过使用嵌套的两个for循环语句,生成了一个新列表new_list。该列表包含了由所有x和y组成的元组。
具体来说,这个列表解析式首先使用第一个for循环语句遍历range(3)产生的整数序列(即0, 1, 2),将每一个值依次赋予变量x,然后再使用第二个for循环语句再次遍历相同的整数序列,将每一个值依次赋予变量y。在for循环中,两个变量x和y组成了一个元组(x, y),并将这个元组添加到一个新列表new_list中。

字典解析式
字典解析式用于从一个可迭代对象中创建一个新的字典。它使用与列表解析式相似的语法,但使用键值对表示。
key_expression 和 value_expression 分别是由 item 元素产生的键和值。
item 是从可迭代对象中依次读取的每个元素。
iterable 是被迭代的对象。
condition 是可选的,如果提供,则对元素进行过滤的条件。
下面我们来看一个例子:
这段代码的含义是通过使用字典解析式从给定列表my_list中生成一个新的字典new_dict,其中字典的键是my_list中的每个元素x,而对应的值是该元素的平方。
具体来说,我们使用for循环语句遍历my_list中的每个元素,并将其赋值给变量x。在字典解析式内部,我们使用花括号{}表示一个字典。对于遍历到的每个元素x,我们可以指定要将其作为键key,并且用冒号:与其对应的平方x**2构成一个键值对,在字典中进行存储。

集合解析式
集合解析式用于从可迭代对象中创建一个新的集合。它将与列表解析式类似,但不会保留重复项。
expression是每个元素要执行的操作,可以是任何有效的 Python 表达式。
item 是从可迭代对象中依次读取的每个元素。
iterable 是被迭代的对象。
condition 是可选的,如果提供,则对元素进行过滤的条件。
下面我们来看一个例子:
这段代码的含义是通过集合解析式从给定列表my_list中生成一个新集合new_set,该集合包含所有在my_list中出现的偶数元素。
具体来说,我们使用for循环语句遍历my_list中的每个元素,并将其赋值给变量x。在集合解析式中,我们使用花括号{}表示一个集合。对于遍历到的每个元素x,我们使用if语句判断是否为偶数,如果是,则将其添加到新集合new_set中。

推荐课程
《Python · AI&数据科学入门》

关注“学姐带你玩AI”公众号
回复“Python”了解课程详情