您的当前位置:首页正文

Python 列表推导式使用技巧

来源:九壹网
1. 基本列表推导式

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

new_list = [expression for item in iterable]


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

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

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


2. 带条件的列表推导式

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

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

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


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

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

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

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


4. 使用多个可迭代对象

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

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

list1 = [1, 2, 3]
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学习资料分享:

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,还有环境配置的教程,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频全套

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

微信扫码免费领取【保证100%免费】

因篇幅问题不能全部显示,请点此查看更多更全内容

Top