列表推导式

列表推导式

[!Note]
列表推导式(List Comprehension)是 Python 中一种非常简洁且强大的语法结构,用于从一个可迭代对象(如列表、元组、字符串、字典、集合等)快速生成新的列表。它将循环和条件语句等逻辑封装在一个方括号内,使代码更加简洁易读。

基本语法

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

[expression for item in iterable if condition]
  • expression:对每个元素进行的操作或表达式,可以是简单的变量,也可以是复杂的表达式。
  • item:代表可迭代对象中的每个元素。
  • iterable:可迭代对象,如列表、元组、字符串等。
  • condition:(可选)过滤条件,用于筛选符合条件的元素。

示例

1. 基本用法

  • 生成列表 1~10

    output = [i for i in range(1, 11)]
    print(output)
    
  • 生成列表 1~10 的平方

    output = [i**2 for i in range(1, 11)]
    print(output)
    
  • 生成 \(y=2x+1 (x \in [0,10])\) 的坐标对

    output = [(x,x*2+1) for x in range(1, 11)]
    print(output)
    

2. 条件筛选

  • 生成列表 1~10 中偶数的平方

    output = [i**2 for i in range(1, 11) if i % 2 == 0]
    print(output)
    

多层循环

  • 生成一个包含两个列表中所有组合的列表:

    list1 = [1, 2, 3, 4, 5]
    list2 = ['a', 'b', 'c']
    output = [(x,y) for x in list1 for y in list2]
    print(output)
    

复杂表达式

list1 = ["ab", "cd", "ef"]

output = [num.upper() for num in list1]

print(output)

优势

  • 代码简洁:列表推导式将多行的循环和条件语句压缩成一行,使代码更加简洁易读。
  • 执行效率高:列表推导式在内部进行了优化,通常比等效的循环代码执行速度更快。
  • 表达力强:可以轻松实现复杂的列表生成逻辑,如多层循环、条件过滤等。

尽管使用列表推导式可以带来许多便利,但其也存在一些局限(或者说某些情况下不太适合使用):

[!WARNING]
-可读性:虽然列表推导式很强大,但过度使用或写得过于复杂可能会降低代码的可读性。在某些情况下,使用普通的循环结构可能更合适. -内存消耗:列表推导式会一次性生成整个列表,如果生成的列表非常大,可能会消耗大量内存。在这种情况下,可以考虑使用生成器表达式(Generator Expression).

生成器表达式

生成器表达式与列表推导式类似,但生成的是一个生成器对象,而不是一个列表。生成器对象可以按需生成元素,从而节省内存。生成器表达式的语法如下:

(expression for item in iterable if condition)

例如,生成一个包含 0 到 9 的平方的生成器

list = (i**2 for i in range(1,11))
for num in list:
    print(num,end=" ")

关注 BeijiuX 公众号,查看更多内容.

weixin

posted @ 2025-01-19 20:37  BeijiuX  阅读(325)  评论(0)    收藏  举报