zoukankan      html  css  js  c++  java
  • python迭代器和生成器

    列表解析 例如:

    1 egg2 = ['鸡蛋%s' % n for n in range(10)]
    2 print(egg2)
    3 输出:
    4 ['鸡蛋0', '鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4', '鸡蛋5', '鸡蛋6', '鸡蛋7', '鸡蛋8', '鸡蛋9']

    列表解析可以增加三元 ;例如:

    1 egg2 = ['鸡蛋%s' % n for n in range(10)]
    2 egg3 = ['鸡蛋%s' % n for n in range(10) if n > 5]
    3 print(egg2)
    4 print(egg3)
    5 输出:
    6 ['鸡蛋0', '鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4', '鸡蛋5', '鸡蛋6', '鸡蛋7', '鸡蛋8', '鸡蛋9']
    7 ['鸡蛋6', '鸡蛋7', '鸡蛋8', '鸡蛋9']

    总结列表解析中,列表左边的是for循环最后的一个变量。只有三元没有四元。不能更改

    变为生成器 例如:以下为生成器表达式

     1 egg_list = ('鸡蛋%s'% i for i in range(10))
     2 print(egg_list)
     3 print(egg_list.__next__())
     4 print(egg_list.__next__())
     5 print(egg_list.__next__())
     6 print(egg_list.__next__())
     7 print(egg_list.__next__())
     8 print(egg_list.__next__())
     9 输出:
    10 鸡蛋0
    11 鸡蛋1
    12 鸡蛋2
    13 鸡蛋3
    14 鸡蛋4
    15 鸡蛋5

    用小括号就变成一个生成器:例如

     1 def test():
     2     yield 1
     3     yield 2
     4     yield 3
     5     yield 4
     6 v = test()
     7 print(v)
     8 print(v.__next__())
     9 print(v.__next__())
    10 print(v.__next__())
    11 print(v.__next__())
    12 输出:
    13 <generator object test at 0x7fc0ea030468>
    14 1
    15 2
    16 3
    17 4

    以上为生成器函数。 可以得知函数可以用yield来变为一个生成器。

  • 相关阅读:
    函数式编程:用户登录和注册
    文件操作
    shell介绍
    函数返回值
    selenium 事件介绍
    Linux添加硬盘设备
    分布式系统中幂等性、at least once 和 at most once 问题
    HBase面试考点
    简单理解:数据库的一致性与四种隔离级别(+MySQL实现)
    大数据框架Hive优化方法
  • 原文地址:https://www.cnblogs.com/ch2020/p/12365576.html
Copyright © 2011-2022 走看看