使用Python列表推导式解决实际问题

文摘   2024-11-12 18:38   江苏  

列表推导式是 Python 中非常强大且灵活的特性之一,它能够让你以一种简洁明了的方式创建列表。本文将从基础到高级逐步介绍列表推导式的使用方法,并通过实际案例帮助你更好地理解和掌握这一技巧。

1. 基本列表推导式

列表推导式的基本语法如下:

new_list = [expression for item in iterable]

这里,expression 是对 item 进行操作的表达式,iterable 是一个可迭代对象,如列表、元组、字符串等。

示例 1:生成一个包含 1 到 10 的平方的列表

squares = [x**2 for x in range(111)]
print(squares)  # 输出: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

2. 带条件的列表推导式

你可以在列表推导式中添加条件语句,以便只对满足特定条件的元素进行操作。

示例 2:生成一个包含 1 到 10 中偶数的平方的列表

even_squares = [x**2 for x in range(111if x % 2 == 0]
print(even_squares)  # 输出: [4, 16, 36, 64, 100]

3. 多层嵌套的列表推导式

列表推导式可以嵌套使用,这样可以处理更复杂的结构。

示例 3:生成一个二维列表,其中每个子列表包含 1 到 3 的平方

nested_list = [[x**2 for x in range(14)] for _ in range(3)]
print(nested_list)  # 输出: [[1, 4, 9], [1, 4, 9], [1, 4, 9]]

4. 使用多个可迭代对象

你可以在列表推导式中使用多个可迭代对象,这在处理多个数据源时非常有用。

示例 4:生成一个列表,包含两个列表中所有可能的组合

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')]

5. 使用复杂表达式

列表推导式中的表达式可以非常复杂,可以包含函数调用、条件表达式等。

示例 5:生成一个列表,包含字符串列表中每个字符串的长度

words = ["apple""banana""cherry"]
lengths = [len(word) for word in words]
print(lengths)  # 输出: [5, 6, 6]

6. 高级技巧:使用列表推导式进行数据清洗

列表推导式在数据清洗中也非常有用,可以帮助你快速过滤和转换数据。

示例 6:去除字符串列表中的空字符串

dirty_data = ["apple""""banana""""cherry"]
clean_data = [word for word in dirty_data if word != ""]
print(clean_data)  # 输出: ['apple', 'banana', 'cherry']

7. 实战案例:处理日志文件

假设你有一个日志文件,每行记录了一个用户的访问时间。你想要提取出所有访问时间在上午 9 点到 11 点之间的记录。

日志文件内容(log.txt):

2023-10-01 08:30:00 - User1
2023-10-01 09:15:00 - User2
2023-10-01 10:45:00 - User3
2023-10-01 12:00:00 - User4

代码实现:

# 读取日志文件
with open('log.txt''r'as file:
    logs = file.readlines()

# 使用列表推导式提取符合条件的记录
filtered_logs = [
    log.strip() for log in logs
    if '09:' <= log[11:13] < '12:'
]

# 打印结果
for log in filtered_logs:
    print(log)

输出:

2023-10-01 09:15:00 - User2
2023-10-01 10:45:00 - User3

总结

本文介绍了 Python 列表推导式的基本用法,包括基本列表推导式、带条件的列表推导式、多层嵌套的列表推导式、使用多个可迭代对象、复杂表达式以及数据清洗中的应用。通过实际案例,展示了如何使用列表推导式处理日志文件中的数据。

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

文末福利

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

精品系统

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

关注我👇,精彩不再错过

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