怎么用Python实现等差数列

发布时间:2022-12-17 09:25:22 作者:iii
来源:亿速云 阅读:134

今天小编给大家分享一下怎么用Python实现等差数列的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Python实现等差数列

def arithemtic_sequence_based_generator(first=0, step=1, sequence_count=10):
    for index in range(0, sequence_count):
        yield first + index * step
        index += 1

if __name__ == "__main__":
    generator = arithemtic_sequence_based_generator(first=0, step=5, sequence_count=10)
    for number in generator:
        print(number, end=" ")

运行结果:

0 5 10 15 20 25 30 35 40 45 

python等差数列生成器

典型的迭代器模式作用很简单——遍历数据结构。

不过,即便不是从集合中获取元素,而 是获取序列中即时生成的下一个值时,也用得到这种基于方法的标准接口。

例如,内置的 range 函数用于生成有穷整数等差数列(Arithmetic Progression,AP), itertools.count 函 数用于生成无穷等差数列。

先来看等差数列:

"""
等差数列实现。
"""


class ArithmeticProgression:

    def __init__(self, begin, step, end=None):
        self.begin = begin
        self.step = step
        self.end = end   # None -> 无穷数列

    def __iter__(self):
        result = type(self.begin + self.step)(self.begin)
        forever = self.end is None
        index = 0
        while forever or result < self.end:
            yield result
            index += 1
            result = self.begin + self.step * index


if __name__ == '__main__':
    ap = ArithmeticProgression(0, 1, 3)
    print(ap)
    # print(list(ap))
    a = iter(ap)
    print(next(a))

这是个简单的示例,说明了如何使用生成器函数实现特殊的 __iter__ 方法。

然而,如果一个类只是为了构建生成器而去实现 __iter__ 方法,那还不如使用生成器函数

毕竟,生成器函数是制造生成器的 工厂。

def aritprog_gen(begin, step, end=None):
    result = type(begin + step)(begin)
    forever = end is None
    index = 0
    while forever or result < end:
        yield result
        index += 1
        result = begin + step * index

使用itertools模块生成等差数列

怎么用Python实现等差数列

然而,itertools.count 函数从不停止,因此,如果调用 list(count()),Python 会创建一 个特别大的列表,超出可用内存,在调用失败之前,电脑会疯狂地运转。

不过,itertools.takewhile 函数则不同,它会生成一个使用另一个生成器的生成器,在指 定的条件计算结果为 False 时停止。因此,可以把这两个函数结合在一起使用,编写下述 代码:

怎么用Python实现等差数列

利用 takewhilecount 函数,写出的代码流畅而简短。

import itertools 


# 注意,下面示例中的 aritprog_gen 不是生成器函数,
# 因为定义体中没有 yield 关键字。
# 但是它会返回一个生成器,
# 因此它与其他生成器函数一样,
# 也是生成器工厂函数。
def aritprog_two_gen(begin, step, end=None):
    first = type(begin + step)(begin)
    ap_gen = itertools.count(first, step)
    if end is not None:
        ap_gen = itertools.takewhile(lambda n: n < end, ap_gen)
    return ap_gen

以上就是“怎么用Python实现等差数列”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

推荐阅读:
  1. python实现一个刷网页小程序的方法
  2. 怎么使用python实现简单的文字识别

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:CMakeList中怎么实现自动编译protobuf文件

下一篇:Android音乐播放器如何实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》