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

 更新时间:2024年09月15日 08:51:34   作者:爱技术的小伙子  
列表推导式和生成器都是Python中处理集合的强大工具,列表推导式用于快速生成列表,而生成器表达式则提供了一种节约内存的方式来处理大型数据集,下面就来介绍一下python实现列表推导式与生成器,感兴趣的可以了解一下

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

1. 列表推导式

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

1.1 基本语法

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

1.2 示例

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

squares = [x**2 for x in range(1, 11)]
print(squares)  # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

带条件的列表推导式:

只保留偶数的平方:

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)的列表:

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 基本语法

generator = (expression for item in iterable if condition)

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

2.2 示例

生成一个生成器表达式:

gen = (x**2 for x in range(1, 11))
print(gen)  # 输出:<generator object <genexpr> at 0x...>

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

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

将生成器转为列表:

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

2.3 生成器的优势

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

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

使用生成器:

large_gen = (x**2 for x in range(1, 1000001))
print(next(large_gen))  # 输出:1

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

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

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

4. 小结

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

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

到此这篇关于python实现列表推导式与生成器的文章就介绍到这了,更多相关python 列表推导式与生成器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现密度聚类(模板代码+sklearn代码)

    python实现密度聚类(模板代码+sklearn代码)

    这篇文章主要介绍了python实现密度聚类(模板代码+sklearn代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程

    Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程

    wxPython是一款集成了Python的图形化类库的工具,而py2exe是一款将Python程序转换为exe可执行文件的程序,二者搭配可以轻松地在Windows中创建图形化程序,这里我们就来学习Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程:
    2016-07-07
  • Opencv实现计算两条直线或线段角度方法详解

    Opencv实现计算两条直线或线段角度方法详解

    这篇文章主要介绍了Opencv实现计算两条直线或线段角度方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • Python利用蒙特卡罗模拟期权定价

    Python利用蒙特卡罗模拟期权定价

    期权是一种合约,它赋予买方在未来某个时间点以特定价格买卖资产的权利。本文将利用蒙特卡罗模拟期权定价,感兴趣的小伙伴可以了解一下
    2022-04-04
  • yolov5模型配置yaml文件详细讲解

    yolov5模型配置yaml文件详细讲解

    YOLOV5模型配置文件存放在modules文件夹下,这里使用的是 yolov5s.yaml,下面这篇文章主要给大家介绍了关于yolov5模型配置yaml文件的相关资料,需要的朋友可以参考下
    2022-09-09
  • Python3 合并二叉树的实现

    Python3 合并二叉树的实现

    这篇文章主要介绍了Python3 合并二叉树的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 利用python numpy+matplotlib绘制股票k线图的方法

    利用python numpy+matplotlib绘制股票k线图的方法

    这篇文章主要介绍了利用python numpy+matplotlib绘制股票k线图的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • PyQt5 如何让界面和逻辑分离的方法

    PyQt5 如何让界面和逻辑分离的方法

    这篇文章主要介绍了PyQt5 如何让界面和逻辑分离的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • python cx_Oracle的基础使用方法(连接和增删改查)

    python cx_Oracle的基础使用方法(连接和增删改查)

    这篇文章主要给大家介绍了关于python cx_Oracle的基础使用方法,其中包括连接、增删改查等基本操作,并给大家分享了python 连接Oracle 乱码问题的解决方法,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • Python API自动化框架总结

    Python API自动化框架总结

    在本篇文章里小编给大家整理的是关于Python API自动化框架总结内容,需要的朋友们学习下。
    2019-11-11

最新评论