Python 列表推导和生成器表达式的区别点

列表推导(List Comprehensions)和生成器表达式(Generator Expressions)在 Python 中有着相似的语法,但它们的行为和用途有所不同。以下是两者之间的主要区别:

1. 内存使用

列表推导:创建一个完整的列表,所有元素都会被立即计算并存储在内存中。

squares_list = [x**2 for x in range(10)]  # 创建一个包含10个元素的列表

print(squares_list)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

生成器表达式:返回一个生成器对象,它不会立即计算所有元素,而是在需要时逐个生成元素。这意味着它占用较少的内存,特别适用于处理非常大的数据集。

squares_gen = (x**2 for x in range(10))  # 创建一个生成器对象
for square in squares_gen:
    print(square, end=' ')  # 输出: 0 1 4 9 16 25 36 49 64 81
    2. 执行时机

    列表推导:所有元素会在创建列表时立即计算出来。

    squares_list = [x**2 for x in range(5)]
    print(squares_list)  # 立即输出: [0, 1, 4, 9, 16]
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包

      打赏作者

      奔向理想的星辰大海

      你的鼓励将是我创作的最大动力

      ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
      扫码支付:¥1
      获取中
      扫码支付

      您的余额不足,请更换扫码支付或充值

      打赏作者

      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值