Python列表推导式进阶:结合lambda与map函数

文摘   2024-11-27 06:39   上海  

列表推导式是 Python 中一个非常强大且简洁的特性,可以让你快速创建列表。今天我们不仅会复习基础的列表推导式,还会结合 lambda 函数和 map() 函数,让你的代码更加高效和优雅。

1. 基础列表推导式

先来回顾一下基础的列表推导式。假设我们有一个列表,我们想生成一个新的列表,其中包含原列表中每个元素的平方:

numbers = [12345]
squares = [x**2 for x in numbers]
print(squares)  # 输出: [1, 4, 9, 16, 25]

这里,[x**2 for x in numbers] 就是一个列表推导式,它遍历 numbers 列表中的每个元素 x,并计算 x**2,最终将结果存储在一个新的列表中。

2. 条件过滤

列表推导式还可以结合条件过滤。例如,我们只想要偶数的平方:

numbers = [12345]
even_squares = [x**2 for x in numbers if x % 2 == 0]
print(even_squares)  # 输出: [4, 16]

这里,if x % 2 == 0 是一个条件过滤器,只有满足条件的元素才会被处理并加入新列表。

3. 结合 lambda 函数

lambda 函数是一种匿名函数,可以在一行内定义简单的函数。我们可以结合 lambda 函数和列表推导式来简化代码。例如,我们想将一个列表中的每个元素转换为字符串:

numbers = [12345]
str_numbers = [str(x) for x in numbers]
print(str_numbers)  # 输出: ['1', '2', '3', '4', '5']

使用 lambda 函数可以这样写:

numbers = [12345]
str_numbers = list(map(lambda x: str(x), numbers))
print(str_numbers)  # 输出: ['1', '2', '3', '4', '5']

4. 结合 map() 函数

map() 函数可以将一个函数应用到一个可迭代对象的每一个元素上,并返回一个迭代器。我们可以结合 map() 函数和列表推导式来处理更复杂的操作。例如,我们想将一个列表中的每个元素乘以 2,然后再加 1:

numbers = [12345]
transformed = [(x * 2) + 1 for x in numbers]
print(transformed)  # 输出: [3, 5, 7, 9, 11]

使用 map() 函数可以这样写:

numbers = [12345]
transformed = list(map(lambda x: (x * 2) + 1, numbers))
print(transformed)  # 输出: [3, 5, 7, 9, 11]

5. 多个列表的组合

列表推导式还可以处理多个列表的组合。例如,我们有两个列表,分别表示两个集合,我们想生成一个包含所有可能组合的新列表:

list1 = [123]
list2 = ['a''b']
combinations = [(x, y) for x in list1 for y in list2]
print(combinations)  # 输出: [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b'), (3, 'a'), (3, 'b')]

6. 高级技巧:嵌套列表推导式

嵌套列表推导式可以处理更复杂的数据结构。例如,我们有一个二维列表,我们想将其展平为一维列表:

matrix = [[123], [456], [789]]
flattened = [num for row in matrix for num in row]
print(flattened)  # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9]

7. 实战案例:文本处理

假设我们有一个包含多个句子的列表,我们想将每个句子中的单词提取出来,并生成一个包含所有单词的列表:

sentences = ["Hello world""Python is great""I love coding"]
words = [word for sentence in sentences for word in sentence.split()]
print(words)  # 输出: ['Hello', 'world', 'Python', 'is', 'great', 'I', 'love', 'coding']

这里,sentence.split() 将每个句子拆分为单词列表,然后 for word in sentence.split() 遍历每个单词并将其添加到新列表中。

总结

今天我们一起学习了 Python 列表推导式的进阶用法,包括如何结合 lambda 函数和 map() 函数来简化代码。我们还探讨了如何处理多个列表的组合和嵌套列表推导式。最后,我们通过一个实战案例展示了如何使用列表推导式进行文本处理。

好了,今天的分享就到这里了,我们下期见。如果本文对你有帮助,请动动你可爱的小手指点赞、转发、在看吧!

付费合集推荐

Python编程基础

Python办公自动化-Excel

微信公众号批量上传发布系统

文末福利

公众号消息窗口回复“编程资料”,获取Python编程、人工智能、爬虫等100+本精品电子书。

推广服务

公众号推广代运营代发服务

关注我👇,精彩不再错过


手把手PythonAI编程
分享与人工智能和python编程语言相关的笔记和项目经历。
 最新文章