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...自然是空列表啦 。 哈 。 哈。 哈

  • 相关阅读:
    Python 学习日记 第七天
    Python 学习日记 第六天
    Python 学习日记 第五天
    Python 学习日记 第四天
    Redis 中的数据类型及基本操作
    Asp.net mvc 中View 的呈现(二)
    Asp.net mvc 中View的呈现(一)
    Asp.net mvc 中Action 方法的执行(三)
    Asp.net mvc 中Action 方法的执行(二)
    Asp.net mvc 中Action 方法的执行(一)
  • 原文地址:https://www.cnblogs.com/Cong0ks/p/9103456.html
Copyright © 2011-2022 走看看