zoukankan      html  css  js  c++  java
  • python iter()的使用 迭代器 生成器的使用

    废话不多说  直接上代码:

    s=iter('12345')
    print 's.next(): ', s.next()
    print 'type(s.next()):' ,  type(s.next())
    
    print 's.next(): ', s.next()
    
    print 'type(s):' , type(s)
    
    
    dic ={ 'a':'c','b':'c'}
    d=iter(dic)
    print 'dic= ',dic
    print 'type(d): ',type(d)
    print 'd.next(): ' ,d.next()

    结果:

    s.next():  1
    type(s.next()): <type 'str'>
    s.next():  3
    type(s): <type 'iterator'>
    dic=  {'a': 'c', 'b': 'c'}
    type(d):  <type 'dictionary-keyiterator'>
    d.next():  a
    

      

     字典的迭代器会遍历他的键。

    for eachKey in dict.keys():   ====== 等于=======for eachKey in dict

    文件迭代器会自动调用readline()方法。

    myFile = open(filename)

    for eachline in myFile:

        print eachline

    可变对象的迭代器,如列表、字典,使用时后不能更改元素的值。

    列表解析: [len(word) for line in file for word in line.split()]

    不足:列表解析必须生成所有的数据,用于创建整个列表,这可能会对有大量数据的迭代器有负面效应。

    生成器表达式 可以通过列表解析和生成器解决这个问题。

    生成器并不真正创建数字列表,二是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目"产生(yeild)"出来。生成器表达式使用了”延迟计算(lazy evaluation)“,所以它在使用内存上更有效。

    与列表解析在形式上的差别仅在于一个是[]一个是()。

     生成器表达式:

       max(len(x.strip()) for x in open(file))

    生成器:

       从语法上讲,生成器是一个带yield语句的函数。一个函数或者子程序只返回一次,但一个生成器能暂停执行并返回一个中间的结果——那就是yeild语句的功能,返回一个值给调用者并暂停执行。当生成器的next()的方法被调用的时候,它会准确地从离开的地方继续。

  • 相关阅读:
    layui第三方组件运用
    layui select lay-filter就不渲染和全局渲染用法和校验
    layui 点击操作列后背景色去掉
    layui混合案列问题
    使用layui富文本添加日志内容,并获取子窗体的富文本内容
    layu tab切换table
    layui 父窗体传子窗体select动态选中
    jstl过长的内容处理空格以及换行并通过js处理内容自动换行
    js中运用jstl标签解决checked是否选中等问题
    javaMD5实现加密解密
  • 原文地址:https://www.cnblogs.com/TianMG/p/3098429.html
Copyright © 2011-2022 走看看