Python基础:三分钟搞懂列表推导式!
今天要跟小伙伴们分享一个Python中非常酷的特性 —— 列表推导式(List Comprehension)。这是一个可以让我们用一行代码就创建出列表的强大工具。它不仅能让代码更简洁,还能提高程序的运行效率。让我们一起来探索这个Python中的"语法糖"吧!
什么是列表推导式?
列表推导式是Python中一种优雅的创建列表的方式,它可以替代传统的for循环。想象一下,它就像是一个"列表制造机",你给它一些规则,它就能按照这些规则自动帮你生成一个列表。
让我们先来看一个简单的例子:
# 传统的for循环方式
squares = []
for i in range(5):
squares.append(i ** 2)
print(squares) # 输出:[0, 1, 4, 9, 16]
# 使用列表推导式
squares = [i ** 2 for i in range(5)]
print(squares) # 输出:[0, 1, 4, 9, 16]
小贴士:看到了吗?用列表推导式,我们只需要一行代码就完成了同样的任务!
列表推导式的基本语法
列表推导式的基本语法结构是:[表达式 for 变量 in 可迭代对象]。我们来拆解一下这个结构:
# 生成1到10的偶数列表
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers) # 输出:[2, 4, 6, 8, 10]
# 生成字符串列表中每个单词的长度
words = ['hello', 'world', 'python']
word_lengths = [len(word) for word in words]
print(word_lengths) # 输出:[5, 5, 6]
带条件的列表推导式
我们还可以在列表推导式中添加条件判断,让它更加灵活:
# 生成100以内能被3整除的数
numbers = [x for x in range(1, 101) if x % 3 == 0]
print(numbers) # 输出:[3, 6, 9, ..., 99]
# 筛选出字符串列表中长度大于3的单词
words = ['cat', 'dog', 'elephant', 'lion', 'tiger']
long_words = [word for word in words if len(word) > 3]
print(long_words) # 输出:['elephant', 'lion', 'tiger']
嵌套的列表推导式
列表推导式还可以嵌套使用,虽然这样可能会让代码看起来有点复杂:
# 生成一个3x3的矩阵
matrix = [[i+j for j in range(3)] for i in range(0, 9, 3)]
print(matrix) # 输出:[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
# 将矩阵展平成一维列表
flattened = [num for row in matrix for num in row]
print(flattened) # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8]
小贴士:虽然嵌套列表推导式很酷,但为了代码的可读性,建议不要嵌套太多层哦!
实际应用场景
让我们来看看列表推导式在实际中的一些应用:
# 处理文件名列表
files = ['doc1.txt', 'pic.jpg', 'doc2.txt', 'data.csv']
txt_files = [f for f in files if f.endswith('.txt')]
print(txt_files) # 输出:['doc1.txt', 'doc2.txt']
# 数据清洗:去除字符串列表中的空格
dirty_data = [' apple ', 'banana ', ' orange']
clean_data = [s.strip() for s in dirty_data]
print(clean_data) # 输出:['apple', 'banana', 'orange']
练习题
试试解决这些小问题:
生成一个包含1-100中所有奇数的平方的列表
将一个字符串列表中的所有单词转换为大写
从一个数字列表中筛选出所有的正数
参考答案:
# 问题1
odd_squares = [x**2 for x in range(1, 101) if x % 2 == 1]
# 问题2
words = ['hello', 'world', 'python']
upper_words = [word.upper() for word in words]
# 问题3
numbers = [-4, 2, -1, 3, -3, 6]
positive_nums = [x for x in numbers if x > 0]
注意事项:
虽然列表推导式很强大,但不要为了使用它而使用它
如果表达式太复杂,还是建议使用传统的for循环
注意列表推导式的可读性,适当添加空格和换行
小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问我哦。祝大家学习愉快,Python学习节节高!
#Python学习 #列表推导式 #Python技巧
领取专属 10元无门槛券
私享最新 技术干货