Python推导式编程技巧

更多资料获取

📚 个人网站:ipengtao.com


Python 推导式(Comprehensions)是一种精简而强大的语法,用于创建列表、字典和集合等数据结构。推导式允许在一行代码中根据现有的可迭代对象创建新的数据结构,这使得代码更加简洁和可读。在本文中,将介绍 Python 中的三种主要推导式:列表推导式、字典推导式和集合推导式。

列表推导式(List Comprehensions)

列表推导式用于从一个或多个可迭代对象中生成新的列表。

它的基本语法如下:

new_list = [expression for item in iterable]

其中:

  • expression 是一个表达式,用于定义新列表中的元素。
  • item 是可迭代对象中的每个元素。
  • iterable 是一个可迭代对象,例如列表、元组、字符串等。

下面是一些示例,演示了列表推导式的使用:

# 创建一个包含 0 到 9 的平方的列表
squares = [x**2 for x in range(10)]

# 从一个字符串中提取所有的大写字母
text = "Hello World"
uppercase_letters = [letter for letter in text if letter.isupper()]

# 创建一个包含偶数的列表
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [x for x in numbers if x % 2 == 0]

列表推导式还支持在表达式中使用条件语句,以根据条件过滤或转换元素。

# 使用条件过滤元素
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [x for x in numbers if x % 2 == 0]

字典推导式(Dictionary Comprehensions)

字典推导式用于从一个或多个可迭代对象中生成新的字典。

它的基本语法如下:

new_dict = {key_expression: value_expression for item in iterable}

其中:

  • key_expression 是一个表达式,用于定义字典中的键。
  • value_expression 是一个表达式,用于定义字典中的值。
  • item 是可迭代对象中的每个元素。
  • iterable 是一个可迭代对象,例如列表、元组、字符串等。

下面是一个示例,演示了字典推导式的使用:

# 创建一个将水果名称映射到其长度的字典
fruits = ["apple", "banana", "cherry"]
fruit_lengths = {fruit: len(fruit) for fruit in fruits}

# 使用条件过滤元素
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_squares = {x: x**2 for x in numbers if x % 2 == 0}

集合推导式(Set Comprehensions)

集合推导式用于从一个或多个可迭代对象中生成新的集合。

它的基本语法如下:

new_set = {expression for item in iterable}

其中:

  • expression 是一个表达式,用于定义集合中的元素。
  • item 是可迭代对象中的每个元素。
  • iterable 是一个可迭代对象,例如列表、元组、字符串等。

下面是一个示例,演示了集合推导式的使用:

# 创建一个包含一组整数的集合
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers_set = {x for x in numbers if x % 2 == 0}

# 从一个字符串中提取所有不重复的单词
text = "Hello World, Python is awesome!"
unique_words = {word.lower() for word in text.split()}

嵌套推导式(Nested Comprehensions)

Python 推导式也支持嵌套,允许在一个推导式中使用另一个推导式。这对于处理嵌套数据结构(例如列表中包含列表或字典中包含字典)非常有用。

嵌套列表推导式

嵌套列表推导式用于创建包含多个嵌套列表的列表。下面是一个示例,演示了如何使用嵌套列表推导式创建一个九九乘法表:

multiplication_table = [[x * y for y in range(1, 10)] for x in range(1, 10)]

这个推导式生成了一个包含 9 个列表的列表,每个列表包含了 1 到 9 的乘法结果。

嵌套字典推导式

嵌套字典推导式用于创建包含多个嵌套字典的字典。

下面是一个示例,演示了如何使用嵌套字典推导式创建一个包含学生信息的字典:

students = {
    "Alice": {"age": 25, "major": "Math"},
    "Bob": {"age": 22, "major": "History"},
    "Charlie": {"age": 28, "major": "Physics"}
}

嵌套集合推导式

嵌套集合推导式用于创建包含多个嵌套集合的集合。下面是一个示例,演示了如何使用嵌套集合推导式创建包含不同水果购物清单的集合:

shopping_lists = {
    {"apple", "banana", "cherry"},
    {"banana", "grape", "kiwi"},
    {"cherry", "kiwi", "orange"}
}

推导式的性能

Python 推导式通常比等效的循环更具性能优势,因为它们在解释器内部进行了优化。在处理大量数据时,推导式可以更快地生成结果。但在某些情况下,特别是处理非常复杂的推导式时,可能会降低可读性。因此,在编写代码时,需要权衡性能和可读性。

总结

在本文中,深入探讨了 Python 推导式,包括列表推导式、字典推导式、集合推导式以及嵌套推导式。推导式是一种强大的语法工具,可用于快速生成新的数据结构,减少了冗长的循环和条件语句。希望这篇文章帮助大家更全面地了解和应用 Python 推导式。


Python学习路线

在这里插入图片描述

更多资料获取

📚 个人网站:ipengtao.com

如果还想要领取更多更丰富的资料,可以点击文章下方名片,回复【优质资料】,即可获取 全方位学习资料包。

在这里插入图片描述
点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值