page contents

Python 列表推导式:让你的代码更优雅、更高效

想象一个简单的任务:我们有一个数字列表 [1, 2, 3, 4, 5],现在想得到一个新列表,其中每个数字都是原列表数字的平方。按照我们最熟悉的思路,你会这样写:

attachments-2025-10-egDMFw4L68e86746ba8d2.png一、一个平平无奇的 for 循环

想象一个简单的任务:我们有一个数字列表 [1, 2, 3, 4, 5],现在想得到一个新列表,其中每个数字都是原列表数字的平方。按照我们最熟悉的思路,你会这样写:

numbers = [1, 2, 3, 4, 5]

squared_numbers = []  # 1. 先创建一个空列表

for num in numbers:  # 2. 遍历原列表

    squared_numbers.append(num * num)  # 3. 计算平方并添加进去

print(squared_numbers)

# 输出: [1, 4, 9, 16, 25]

二、列表推导式的真面目

同样的需求,用列表推导式来写,只需要一行:

numbers = [1, 2, 3, 4, 5]

squared_numbers_new = [num * num for num in numbers]

print(squared_numbers_new)

# 输出: [1, 4, 9, 16, 25]

解析:

[<表达式> for <元素> in <可迭代对象>]

• []:首先,它被一对方括号包围,这明确告诉Python:“嘿,我要创建一个新列表!”

• <表达式> (num * num):这是你希望对每个元素进行的操作。可以是计算、调用函数,或者任何能返回一个值的表达式。

• for <元素> in <可迭代对象> (for num in numbers):这部分和你熟悉的 for 循环几乎一模一样,它负责从源(numbers列表)中逐个取出元素(num)。

三、加入if筛选

列表推导式的强大之处不止于此。假设我们只想计算偶数的平方,怎么办?

传统的 for 循环需要加一个 if 判断:

numbers = [1, 2, 3, 4, 5]

even_squared_numbers = []

for num in numbers:

    if num % 2 == 0:  # 如果是偶数

        even_squared_numbers.append(num * num)

print(even_squared_numbers)

# 输出: [4, 16]而在列表推导式中,我们只需要在末尾加上 if 条件即可:

numbers = [1, 2, 3, 4, 5]

even_squared_numbers = [num * num for num in numbers if num % 2 == 0]

print(even_squared_numbers)

# 输出: [4, 16]语法变成了:[<表达式> for <元素> in <可迭代对象> if <条件>]

这个 if 就像一个过滤器,只有满足条件的元素才会被加工并放入新列表。

四、更进一步的if-else

那如果我想对不同条件的元素做不同的处理呢?比如,把偶数变成它的平方,奇数变成它的相反数。这时,if-else就要登场了。但要注意,它的位置和单纯的 if 筛选不一样。

numbers = [1, 2, 3, 4, 5]

transformed_numbers = [num * num if num % 2 == 0 else -num for num in numbers]

print(transformed_numbers)

# 输出: [-1, 4, -3, 16, -5]它的语法是:[<为真时的表达式> if <条件> else <为假时的表达式> for <元素> in <可迭代对象>]这里的 if-else 构成了一个三元运算符,它必须放在 for 循环的前面,因为它决定了表达式本身的值。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

2224 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2224 文章
  3. Pack 1407 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章