下面详细讲解一下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 条件表达式}
其中,key
和value
是对元素运算产生的字典项的键和值,元素 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中优秀的语法糖,使用提高效率的同时,可以将代码写的更加简洁易读。