Python 的列表推导式,这个看似简单的语法糖,实则内含无限威力。在 Python 代码编写中,列表推导式的灵活性和简洁性让它成为了不可或缺的一部分。在这篇文章中,我们将更全面、更深入地探讨列表推导式,从基础的概念认识,到各类进阶的用法和操作,我们一一揭秘。最后,我们还将在 “One More Thing” 部分分享一个非常有趣且实用的列表推导式技巧,这会让你在编程道路上又多一份强大的工具。
列表推导式,就是一种在 Python 中创建列表的方式,它的基础形式如下:
[expression for item in iterable]
它实质上是一个 for 循环的简化形式。例如,我们可以用它来创建一个包含 0 到 9 平方的列表:
squares = [x**2 for x in range(10)]
print(squares) # Output: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
这样,你不需要再使用传统的 for 循环来创建列表,代码更加简洁和清晰。
列表推导式更强大的地方在于,我们可以在其中加入条件判断,以过滤出我们想要的元素:
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares) # Output: [0, 4, 16, 36, 64]
在这个例子中,我们只生成了偶数的平方,只需加入一个简单的 if 条件,我们就可以灵活地过滤出我们需要的元素。
更进一步,列表推导式还可以嵌套使用,处理更复杂的数据结构,比如我们要将一个嵌套列表展平:
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened_list = [x for sublist in nested_list for x in sublist]
print(flattened_list) # Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]
这个例子中,我们将一个二维的嵌套列表展平成了一维列表,就像是将多层次的数据展开,方便我们进行后续处理。
列表推导式中的表达式可以帮助我们对数据进行变形:
strings = ['Hello', 'World', 'In', 'Python']
lowercase_strings = [s.lower() for s in strings]
print(lowercase_strings) # Output: ['hello', 'world', 'in', 'python']
在这个例子中,我们将一个包含几个字符串的列表,通过 str.lower()
函数,将其转换成了全小写。通过改变表达式,我们可以在生成新列表的同时,对数据进行各种变形操作。
推导式不仅仅可以应用于列表,还可以推广到字典和集合中:
squared_dict = {x: x**2 for x in range(5)}
print(squared_dict) # Output: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
squared_set = {x**2 for x in range(5)}
print(squared_set) # Output: {0, 1, 4, 16, 9}
这两个例子分别演示了字典推导式和集合推导式的用法,这些结构的推导式可以更方便我们处理复杂的数据结构。
列表推导式不仅代码更加简洁,实际上在很多情况下,列表推导式的执行效率也优于传统的 map
或 filter
函数:
import time
# Using list comprehension
start_time = time.time()
squares = [x**2 for x in range(1000000)]
end_time = time.time()
print(f"List comprehension took {end_time - start_time} seconds")
# Using map function
start_time = time.time()
squares = list(map(lambda x: x**2, range(1000000)))
end_time = time.time()
print(f"Map function took {end_time - start_time} seconds")
在这个例子中,我们分别用列表推导式和 map
函数创建一个包含一百万个元素的列表,可以看到列表推导式的执行时间通常要少于 map
函数。
在我的 GitHub 学习过程以及在各种技术博客中阅读,我发现一个关于列表推导式的有趣且实用的技巧,那就是使用列表推导式实现全排列:
perms = [(x, y, z) for x in range(3) for y in range(3) for z in range(3) if x != y and y != z and x != z]
print(perms) # Output: [(0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)]
这个例子通过列表推导式生成了 3 个元素的全排列,使用了嵌套循环和条件判断,非常简洁而高效。
总的来说,Python 的列表推导式是一个非常强大而灵活的工具,能够帮助我们更好地处理数据和创建数据结构。希望这篇文章能帮助你更深入地理解和应用列表推导式,让你的 Python 代码更加简洁和高效。
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,希望提供给想学习 Python 的小伙伴们一点帮助!
保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
② 路线对应学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述
③练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
因篇幅有限,仅展示部分资料
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】