模仿python中的range功能

Posted zengsf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模仿python中的range功能相关的知识,希望对你有一定的参考价值。

主要是利用生成器来写的一个函数:

def myxrange(start, stop = 0, step = 1):
    if stop == 0 and step == 1:          #只输入一个形参时
        stop = start
        start = 0
        while start < stop:
            yield start
            start +=1
    elif step == 1:                             #输入两个形参时
        while start < stop:
            yield start
            start += 1
    else:                                            #输入三个形参时          
        if stop < start and step < 0:
            while start > stop:
                yield start
                start += step
        elif stop >= start and step > 0:
            while start < stop:
                yield start
                start += step
        else:
            print("不合法")

print(sum(x**2 for x in myxrange(1, 10) if x % 2 != 0 ))  #这里是利用了迭代器推导式直接求和

输出结果:165

只不过还有一个bug,就是当输入两个形参时,第一个形参小于第二个形参且第二个形参为0,其它的都没有问题了。

以上是关于模仿python中的range功能的主要内容,如果未能解决你的问题,请参考以下文章

Dom Range-一个@功能的具体实现

python python中的漂亮(或漂亮打印)JSON对象具有这一功能。在尝试了解什么时,我总是使用这个片段

python中的for i in range怎么用

python中的for i in range怎么用

Python学习中的知识点(range和xrange)

Python range 数据类型 [学习 Python 必备基础知识][看此一篇就够了][range()][range 元素元素检测元素索引查找切片负索引][检测 range 对象是否相等](代码片