码迷,mamicode.com
首页 > 编程语言 > 详细

模仿python中的range功能

时间:2018-08-21 23:05:08      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:lse   结果   功能   range   for   python   有一个   star   第一个   

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

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功能

标签:lse   结果   功能   range   for   python   有一个   star   第一个   

原文地址:https://www.cnblogs.com/zengsf/p/9514997.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!