美文网首页
Python学习: 列表推导式和生成器表达式

Python学习: 列表推导式和生成器表达式

作者: 达闻西_ | 来源:发表于2020-03-30 23:35 被阅读0次

列表推导式是构建列表(list)的快捷方式,生成器表达式则可以用来创建其他任何类型的序列,如果你的代码里不经常使用他们,那么很可能你错过了许多可写出可读性更好且更高效的代码的机会 <流畅的python>

情景

此时我们想要创建一个数组,里面是1到10000以内的所有偶数。

首先第一个想到的是用for in 循环

l = []
for i in range(1, 10000):
    if i%2 == 0:
        l.append(i)

显然这个一个解,如果你初学python,这么解一定没有问题,可是做开发的时候,就需要考虑效率问题

列表推导式

[i for i in range(1, 10000) if i%2 == 0]

简单翻译一下:我们需要得到i,这个i的范围是1到10000,如果i除以2等于0的话

列表推导式的作用只有一个:生成列表!!!

语法非常简单,在中括号内写上循环条件结果就行。显然用列表推导式得到的代码更加易读,方便他人查看阅读学习。

使用原则:只用列表推导式来创建新的列表,如果超过两行,就要考虑是否要用for循环重写

生成器表达式

l = (i for i in range(1, 10000) if i%2==0)
#<generator object genexpr at 0x0000>

生成器表达式 只需要将列表推导式的中括号换成小括号即可。

生成器是一种特殊的迭代器

迭代器:惰性计算数据,节省内存,能够记录状态,并且通过next()函数访问下一个状态

生成器拥有迭代器的性质

生成器产生的数据不会一次被加载到内存中,可以节约内存空间,如果上文是1到100000000的偶数,那么生成的列表将会非常占用空间,并且很大可能我们只会用到当中的某几个数字,如果将所有数字加载到内存中,显然是不合适的。

print(next(l)) # 2
print(next(l)) # 4

每调用一次next()方法,就会拿到当前位置的下一位置的数据,并且记录目前的位置状态,等到下次调用next()方法的时候,就会顺着获得下一个数据。

for i in l:
    print(l)

显然也可以用for循环迭代生成器表达式的结果


有疑问欢迎交流学习

相关文章

  • Python 各种推导式

    python 列表推导式 执行结果 生成器表达式 1 把列表解析的[]换成()得到的就是生成器表达式 2 列表解析...

  • python 基础 05 生成器,列表推导式,次要的内置函数

    python 基础 05 1.生成器 2.列表推导式 3.生成器表达式 4.字典推导式与集合推导式 5.次要的内置函数

  • Python 生成器和迭代器

    生成器和迭代器 生成器 Python 列表推导和生成器表达式 在上文中简单介绍了生成器的作用。在列表推导创建列表时...

  • Effective Python(9): 用生成器表达式来改写数

    一、生成器表达式产生背景 列表推导Effective Python(7): 用列表推导来取代map和filter ...

  • python列表推导式和生成器推导式

    之前我们已经学习了最简单的列表推导式和生成器表达式。但是除此之外,其实还有字典推导式、集合推导式等等。 下面是一个...

  • 迭代器&生成器

    列表推导式: 列表生成式: 相当于: 以上就是用for语句的迭代器。 生成器表达式: 生成器函数: 调用: 生成器...

  • Python 入门之推导式

    Python 入门之 推导式 推导式就是构建比较有规律的列表,生成器,字典等一种简便的方式 1、推导式 (1)列表...

  • Python中的推导式

    列表推导式 字典推导式 集合推导式 生成器推导式

  • 推导式,生成器,迭代器

    列表推导式 1.举例 字典推导式 1.举例 生成器 创建生成器的方式1.生成器表达式2.yield 关键字 生成器...

  • python高级用法

    本文主要介绍三种python的高级用法:列表推导式、迭代器和生成器、装饰器 一、列表推导(list compre...

网友评论

      本文标题:Python学习: 列表推导式和生成器表达式

      本文链接:https://www.haomeiwen.com/subject/dptiuhtx.html