欢迎访问宙启技术站
智能推送

Python中的推导式函数

发布时间:2023-07-13 02:22:21

在Python中,推导式函数(Comprehension)是一种简洁而强大的语法,用于在一行代码中创建、转换或过滤列表、字典和集合等可迭代对象。推导式函数可以帮助我们在代码中减少重复的部分,使代码更加简洁和可读性更高。

Python中的推导式函数包括列表推导式(List Comprehension)、字典推导式(Dictionary Comprehension)和集合推导式(Set Comprehension)。

1. 列表推导式:

列表推导式是最常用的推导式函数。它以一种简洁的方式从一个可迭代对象(如列表、元组或字符串)创建一个新的列表。列表推导式的基本语法是将一个表达式放在方括号中,并使用for循环遍历原始可迭代对象。

例如,我们想要创建一个包含1到10的平方数的列表,可以使用列表推导式来实现:

squared = [i**2 for i in range(1, 11)]

print(squared)  # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

在这个示例中,我们使用range(1, 11)来生成一个包含1到10的整数的可迭代对象。然后,对于每个元素i,我们计算i的平方数,并将结果添加到squared列表中。

列表推导式还可以包含if条件语句,用于过滤可迭代对象中的元素。假设我们只想选择偶数的平方数,可以添加一个if条件语句:

squared_even = [i**2 for i in range(1, 11) if i % 2 == 0]

print(squared_even)  # 输出:[4, 16, 36, 64, 100]

在这个示例中,我们使用if i % 2 == 0条件来过滤奇数。只有当i是偶数时,才计算和添加i的平方数到squared_even列表中。

2. 字典推导式:

字典推导式类似于列表推导式,但是它可以用来创建新的字典。字典推导式的基本语法是将一个键值对表达式放在花括号中,并使用for循环遍历原始可迭代对象。

例如,我们想要创建一个从1到5的整数到它们的平方数的映射的字典,可以使用字典推导式来实现:

squared_dict = {i: i**2 for i in range(1, 6)}

print(squared_dict)  # 输出:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

在这个示例中,我们使用range(1, 6)来生成一个包含1到5的整数的可迭代对象。然后,对于每个元素i,我们使用i作为键,并将i的平方数作为值添加到squared_dict字典中。

字典推导式也可以包含if条件语句来过滤可迭代对象中的元素。假设我们只想选择偶数,并将它们的平方数添加到字典中,可以添加一个if条件语句:

squared_even_dict = {i: i**2 for i in range(1, 6) if i % 2 == 0}

print(squared_even_dict)  # 输出:{2: 4, 4: 16}

在这个示例中,我们使用if i % 2 == 0条件来过滤奇数。只有当i是偶数时,才将i作为键,并将i的平方数作为值添加到squared_even_dict字典中。

3. 集合推导式:

集合推导式与列表推导式和字典推导式类似,但是它用来创建新的集合。集合推导式的基本语法是将一个表达式放在花括号中,并使用for循环遍历原始可迭代对象。

例如,我们想要创建一个包含1到5之间的偶数集合,可以使用集合推导式来实现:

even_set = {i for i in range(1, 6) if i % 2 == 0}

print(even_set)  # 输出:{2, 4}

在这个示例中,我们使用range(1, 6)来生成一个包含1到5的整数的可迭代对象。然后,对于每个元素i,我们使用if i % 2 == 0条件来过滤奇数,并将偶数添加到even_set集合中。

总结:

推导式函数是Python中一种简洁而强大的语法,用于在一行代码中创建、转换或过滤可迭代对象。列表推导式、字典推导式和集合推导式分别用于创建新的列表、字典和集合。它们可以使用for循环和if条件语句来遍历和过滤原始可迭代对象,并根据需要对元素进行操作。推导式函数使我们的代码更加简洁和可读性更高。