Python列表推导式,元组推导式,字典推导式,集合推导式

  • Post category:Python

下面详细讲解一下Python中常用的四种推导式。

列表推导式(List Comprehension)

Python的列表推导式是一种构建新列表的简洁方式。它可以从一个可迭代对象中创建一个新的列表,并对元素进行筛选、变换等处理。

列表推导式的格式为:[表达式 for 变量 in 可迭代对象 if 条件表达式]

其中,表达式是对变量进行运算的表达式,for 变量 in 可迭代对象表示从可迭代对象中依次获取元素并赋值给变量,if 条件表达式表示对元素进行筛选,只有满足条件的元素才会被加入到新列表中。

下面是一个例子,从1到10的整数中挑出偶数构成新列表:

num_list = [i for i in range(1, 11) if i % 2 == 0]
print(num_list)    # 输出:[2, 4, 6, 8, 10]

这个例子中,i for i in range(1, 11)表示遍历1到10之间的整数,if i % 2 == 0表示只选择偶数元素,最后构成新列表。

元组推导式(Tuple Comprehension)

Python中没有预置的元组推导式语法,但可以通过内置的生成器函数和tuple()函数实现元组推导的效果。

下面是一个例子,将1到10的整数中的奇数元素通过生成器函数和tuple()函数转换成元组:

odd_tuple = tuple(i for i in range(1, 11) if i % 2 == 1)
print(odd_tuple)   # 输出:(1, 3, 5, 7, 9)

这个例子中,(i for i in range(1, 11) if i % 2 == 1)表示用生成器产生1到10之间的奇数元素,tuple()函数将生成器返回的元素转换成元组。

字典推导式(Dictionary Comprehension)

字典推导式是一种从任意的可迭代对象中构建字典的简洁方式。它可以利用可迭代对象产生的元素来作为字典的键或值。

字典推导式的格式为:{key:value for 元素 in 可迭代对象 if 条件表达式}

其中,keyvalue是对元素运算产生的字典项的键和值,元素 in 可迭代对象表示依次获取可迭代对象中的元素,if 条件表达式表示对元素进行筛选,只有满足条件的元素才会构成字典项。

下面是一个例子,将1到10的整数中的奇数元素作为键,其平方作为值构建字典:

odd_dict = {i:i**2 for i in range(1, 11) if i % 2 == 1}
print(odd_dict)   # 输出:{1: 1, 3: 9, 5: 25, 7: 49, 9: 81}

这个例子中,i:i**2表示将i作为字典的键,将i的平方作为字典的值,字典项构成之后返回字典。

集合推导式(Set Comprehension)

与列表推导式、元组推导式、字典推导式类似,Python中也有集合推导式。它可以从可迭代对象中构建新集合。

集合推导式的格式为:{元素 for 元素 in 可迭代对象 if 条件表达式}

其中,元素是从可迭代对象中产生的元素,if 条件表达式表示对元素进行筛选,只有满足条件的元素才会加入到集合中。

下面是一个例子,从1到10的整数中挑出大于5的数字构成集合:

num_set = {i for i in range(1, 11) if i > 5}
print(num_set)    # 输出:{6, 7, 8, 9, 10}

这个例子中,i for i in range(1, 11)表示遍历1到10之间的整数,if i > 5表示只选择大于5的元素,最后构成新集合。

以上就是Python中常用的四种推导式:列表推导式、元组推导式、字典推导式和集合推导式。它们都是Python中优秀的语法糖,使用提高效率的同时,可以将代码写的更加简洁易读。