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

  • 相关阅读:
    Thymeleaf 用法
    如何使用FormData上传压缩裁剪后的图片Blob对象
    video播放视频以及相关事件
    将表单序列化为json对象
    滑动到底部自动加载下一页内容,手机H5页面
    获取URL参数
    关于循环往集合添加元素,而导致的元素覆盖问题
    SpringMVC传递数组参数
    SQL查询语句
    jQuery DOM节点操作
  • 原文地址:https://www.cnblogs.com/ch2020/p/12365576.html
Copyright © 2011-2022 走看看