• 使用__iter__ , 和__reversed__ 实现正、反向迭代器


    内置的iter(), reversed()函数可以进行正反向迭代,如果需要定制正反向迭代,要怎么做呢?

    事实上iter函数是调用的__iter__方法, reversed,则是调用的__reversed__方法,那么只需要

    重写这两个方法即可:

    这里演示反向输出浮点列表:

    #!/usr/bin/env python
    #coding:utf-8
    #@Author:Andy
    
    # iter() 使用的是__iter__方法
    # reversed() 使用的是__reversed__ 方法
    # 所以如果要自己实现,只需要重新写该方法即可
    
    # 反向迭代器:
    
    
    class FloatRange:
    	def __init__(self, start, end, step=1.0):
    		self.start = start
    		self.end = end
    		self.step = step
    
    	# 正向
    	def __iter__(self):
    		t = self.start
    		while t < self.end:
    			yield t
    			t += self.step
    	# 反向
    	def __reversed__(self):
    		t = self.end
    		while t > self.start:
    			yield t
    			t -= self.step
    
    [print(x) for x in reversed(FloatRange(1.0, 5.0, 0.5))]
    

  • 相关阅读:
    SendMessage 和 SendMessageTimeout 可能存在异常(除超时)
    类型强制转换符 与 + 符的优先级
    茵茵的第一课
    C小加 之 随机数
    16进制的简单运算
    交换输出
    计算球体积
    a letter and a number
    A problem is easy
    Coin Test
  • 原文地址:https://www.cnblogs.com/Andy963/p/6984934.html
Copyright © 2020-2023  润新知