广告位联系
返回顶部
分享到

python实现列表推导式与生成器的介绍

python 来源:互联网 作者:佚名 发布时间:2024-09-16 23:07:30 人浏览
摘要

列表推导式和生成器是 Python 中的两个非常有用的工具。它们可以帮助你以简洁和高效的方式创建和处理数据集合。了解它们的用法不仅可以让代码更加简洁,还能提升代码的执行效率。 1. 列

列表推导式和生成器是 Python 中的两个非常有用的工具。它们可以帮助你以简洁和高效的方式创建和处理数据集合。了解它们的用法不仅可以让代码更加简洁,还能提升代码的执行效率。

1. 列表推导式

列表推导式(List Comprehension)是一种简洁的创建列表的方式。通过它,能够用一行代码生成列表,而不需要像传统方式那样使用循环。

1.1 基本语法

1

new_list = [expression for item in iterable if condition]

  • expression:在每个元素上执行的操作,结果会存入新的列表。
  • item:从可迭代对象中获取的元素。
  • iterable:可以是列表、元组、集合、字符串等任何可迭代对象。
  • condition(可选):对元素进行筛选,只有满足条件的元素才会被添加到新的列表中。

1.2 示例

创建一个包含1到10平方值的列表:

1

2

squares = [x**2 for x in range(1, 11)]

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

带条件的列表推导式:

只保留偶数的平方:

1

2

even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]

print(even_squares)  # 输出:[4, 16, 36, 64, 100]

使用多个循环的列表推导式:

创建一个包含(1, 2), (1, 3), (2, 2), (2, 3)的列表:

1

2

pairs = [(x, y) for x in range(1, 3) for y in range(2, 4)]

print(pairs)  # 输出:[(1, 2), (1, 3), (2, 2), (2, 3)]

2. 生成器表达式

生成器表达式(Generator Expression)与列表推导式非常相似,但不同的是,生成器表达式不会一次性将所有结果存储在内存中,而是每次迭代时动态生成数据。这使得生成器在处理大量数据时比列表推导式更高效。

2.1 基本语法

1

generator = (expression for item in iterable if condition)

生成器表达式的语法与列表推导式几乎相同,只是使用了圆括号而不是方括号。

2.2 示例

生成一个生成器表达式:

1

2

gen = (x**2 for x in range(1, 11))

print(gen)  # 输出:<generator object <genexpr> at 0x...>

要获取生成器中的元素,可以使用 next() 函数或将其转为列表:

1

2

print(next(gen))  # 输出:1

print(next(gen))  # 输出:4

将生成器转为列表:

1

2

gen_list = list(gen)

print(gen_list)  # 输出:[9, 16, 25, 36, 49, 64, 81, 100]

2.3 生成器的优势

生成器的主要优势在于它节省内存。生成器一次只生成一个值,而不是像列表那样一次性将所有元素加载到内存中。因此,生成器在处理非常大的数据集时非常有用。

例如:生成前 100 万个数字的平方

使用生成器:

1

2

large_gen = (x**2 for x in range(1, 1000001))

print(next(large_gen))  # 输出:1

与列表推导式相比,生成器几乎不占用额外内存,而列表推导式会创建一个 100 万元素的列表。

3. 列表推导式 vs 生成器表达式

特性 列表推导式 生成器表达式
括号 方括号 [] 圆括号 ()
返回类型 列表 生成器
内存消耗 会一次性加载所有元素到内存中 每次迭代动态生成,内存占用小
适用场景 适合处理较小的数据集 适合处理大数据集或惰性计算
可修改性 生成的列表可以修改 生成器是只读的,不能修改

4. 小结

  • 列表推导式:用于创建新的列表,写法简洁、执行快速,适用于需要返回完整列表的场景。
  • 生成器表达式:用于创建生成器,节省内存,适合处理大数据集或惰性计算的场景。

掌握列表推导式与生成器,不仅可以让代码更加简洁易读,还能有效提升代码性能,在不同的应用场景中选择合适的工具将大大提高代码效率。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • PyTorch池化层详解及作用

    PyTorch池化层详解及作用
    在深度学习中,池化层(Pooling Layer)是卷积神经网络(CNN)中的关键组成部分。池化层的主要功能是对特征图进行降维和减少计算量,同时
  • python实现列表推导式与生成器的介绍
    列表推导式和生成器是 Python 中的两个非常有用的工具。它们可以帮助你以简洁和高效的方式创建和处理数据集合。了解它们的用法不仅可以
  • python关于图片和base64互转的三种方式

    python关于图片和base64互转的三种方式
    通过cv2进行转换 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import cv2 import base64 import numpy as np def img_to_base64(img_array): # 传入图片为RGB格式numpy矩阵,
  • Python虚拟环境virtualenv安装的详细教程保姆级(Wi

    Python虚拟环境virtualenv安装的详细教程保姆级(Wi
    虚拟环境安装 工作中我们经常会根据不同的项目切换不同的python环境,如果仅仅是在本地就安装一个python环境,项目移植也要重新配置环境
  • python中eval的用法介绍

    python中eval的用法介绍
    python中eval的用法 eval(字符串) 能够以Python表达式的方式解析并执行字符串,并将返回结果输出。 eval()函数将去掉字符串的两个引号,将其解
  • Python使用切片移动元素位置的代码
    一.基本介绍 1.切片基础 在 Python 中,切片是指从序列类型(如列表、字符串、元组等)中提取子序列的过程。切片的基本语法如下: 1 seq
  • Python使用FastApi发送Post请求的步骤
    一.基本介绍 FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,它基于 Python 3.6 及以上版本。在 FastAPI 中发送 POST 请求,通常是
  • pytorch GPU和CPU模型相互加载方式
    1 pytorch保存模型的两种方式 1.1 直接保存模型并读取 1 2 3 4 5 6 7 # 创建你的模型实例对象: model model = net() ## 保存模型 torch.save(model, model_name
  • pytorch模型保存方式介绍
    pytorch模型保存 保存模型主要分为两类: 保存整个模型 只保存模型参数 1.保存加载整个模型(不推荐) 保存整个网络模型,网络结构+权重
  • 使用python生成定制化词云的代码

    使用python生成定制化词云的代码
    数据可视化已成为我们理解复杂信息的关键工具。词云,作为一种流行的数据可视化形式,能够将大量文本数据中的关键词以视觉化的方式
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计