zoukankan      html  css  js  c++  java
  • 学习Py——自己模拟写的一个Range功能

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 __author__ = "loki"
     4 
     5 # function: Modeled range
     6 from collections import Iterable, Iterator
     7 
     8 
     9 class Range:
    10     def __init__(self, start, stop, step=1):
    11         self.num = start
    12         self.stop = stop
    13         self.jump = step
    14 
    15     def __iter__(self):
    16         return self
    17 
    18     def __next__(self):
    19         if self.num >= self.stop:
    20             raise StopIteration
    21         n = self.num
    22         self.num += 1
    23         if self.jump > 1:  # step > 1
    24             n = n * self.jump
    25             if n <= self.stop:
    26                 return n
    27             else:
    28                 raise StopIteration
    29         return n  # default step
    30 
    31 
    32 f = Range(0, 12, 2)
    33 f1 = range(0, 12, 2)
    34 
    35 # print(isinstance(f, Iterable))
    36 # print(isinstance(f, Iterator))
    37 
    38 # for item in f:       <---这个地方把值取空了,自然获得的list的结果是空列表了 - -|||
    39 #     print(item)
    40 
    41 print(type(f))
    42 print(list(f))
    43 print('---------分割线-------------')
    44 print(type(f1))
    45 print(list(f1))
    46 
    47 print(dir(f))
    48 print(dir(f1))

    遗留问题:

    虽然,完成了 range(启始, 结束, 步进).但是,发现官方的range在执行list()的时候会直接生成列表。而我做的这个“山寨”好像就返回的是空列表。(已解决)

    原因就是,上面一个for循环把f的值取空了,下面在进行list...自然是空列表啦 。 哈 。 哈。 哈

  • 相关阅读:
    Shell case esac 和 for
    Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等
    杨辉三角+优化算法
    mount --bind和硬连接的区别
    Linux文件系统管理
    磁盘管理
    Linux之find文件(目录)查找
    BZOJ 3224 平衡树模板题
    NOIP 2016 滚粗记
    BZOJ 4034 线段树+DFS序
  • 原文地址:https://www.cnblogs.com/Cong0ks/p/9103456.html
Copyright © 2011-2022 走看看