WEB开发网
开发学院软件开发Python 可爱的 Python: 迭代器和简单生成器 阅读

可爱的 Python: 迭代器和简单生成器

 2008-11-13 13:17:36 来源:WEB开发网   
核心提示: 幸运的是,使用生成器比理解程序流和状态的所有概念性问题容易得多,可爱的 Python: 迭代器和简单生成器(2),实际上,稍加实践之后,我们有几种方法来解决这个问题,一种方法是,就可以象普通函数那样容易地使用生成器,随机遍历让我们考虑一个相当简单的问题

幸运的是,使用生成器比理解程序流和状态的所有概念性问题容易得多。实际上,稍加实践之后,就可以象普通函数那样容易地使用生成器。

随机遍历

让我们考虑一个相当简单的问题,可以用多种方法来解决它 ― 新方法和旧方法都可以。假设我们想要一串正的随机数字流,它比服从向后参考约束的数字流要小。明确的讲,我们希望每个后续数字比前一个数字至少大或小 0.4。而且,数字流本身不是无限的,在几个随机步骤后结束。这个示例中,当数字流中产生小于 0.1 的数字时,我们将简单地结束它。上述的约束有点象可以在“随机遍历”算法找到的约束,结束条件类似“统计”或“局部最小值”结果 ― 但当然,这要比大多数现实世界中简单。

在 Python 2.1 或更早的版本中,我们有几种方法来解决这个问题。一种方法是,简单地生成流中的数字列表并返回它。可能看起来象:

RandomWalk_List.py

  
     import
    
     random
  
     def
  
     randomwalk_list
    
    ():
  last, rand = 1, random.random()
    
    # init candidate elements
  nums = []           
    
    # empty list
    
     
     while
    
     rand > 0.1:       
    
    # threshhold terminator
         
     
     if
    
     abs(last-rand) >= 0.4: 
    
    # accept the number
      last = rand
      nums.append(rand)   
    
    # add latest candidate to nums
         
     
     else
    
    :
  
     
     print
    
     '*',       
    
    # display the rejection
    rand = random.random()   
    
    # new candidate
  nums.append(rand)       
    
    # add the final small element
    
     
     return
    
     nums
   

上一页  1 2 3 4 5 6 7  下一页

Tags:可爱 Python 迭代

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接