• 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来变为一个生成器。

  • 相关阅读:
    vue中的组件传值
    Object中defineProperty数据描述
    promiseall的使用场景
    babel安装及使用
    checkbox属性checked="checked"已有,但却不显示打勾的解决办法
    【转载】表单验证<AngularJs>
    CSS3 :nth-child()伪类选择器
    【转载】浏览器加载和渲染html的顺序
    css制作的61种图像
    网站链接样式设置
  • 原文地址:https://www.cnblogs.com/ch2020/p/12365576.html
Copyright © 2020-2023  润新知