首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python基础:三分钟搞懂列表推导式!

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技巧

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OkCAxiixMMHrl9499_Da1mmQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券