我的编程空间,编程开发者的网络收藏夹
学习永远不晚

用Python实现的等差数列方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

用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模块生成等差数列

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

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

利用 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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

用Python实现的等差数列方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

用Python实现的等差数列方式

这篇文章主要介绍了用Python实现的等差数列方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-12-16

怎么用Python实现等差数列

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

MySQL自定义序列数的实现方式

目录mysql自定义序列数实现创建序列表插入定义的序列自定义函数实现MyBATis中调用函数来获取最新序列数MySQL添加自定义的序列使用实例总结MySQL自定义序列数实现往往有很多情况下,我们需要使用自己生成的唯一Id或保证不重复的序列
2022-12-28

Hive行转列的实现方式

本篇内容主要讲解“Hive行转列的实现方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hive行转列的实现方式”吧!前言传统关系型数据库中,无论是Oracle(11g之后)还是SQLserve
2023-06-19

mysql alter添加列的实现方式

目录mysql alter添加列alter的执行过程如下mysql基础之alter字段解读1、先创建一张表testalter_tbl2、删除,添加或修改表字段3、修改字段类型及名称4、 ALTER TABLE 对 Null 值和默认值的影响
2023-01-28

Python 两个列表的差集、并集和交集实现代码

①差集 方法一:if __name__ == '__main__':a_list = [{'a' : 1}, {'b' : 2}, {'c' : 3}, {'d' : 4}, {'e' : 5}]b_list = [{'a' : 1}, {
2022-06-04

PHP实现数组差集操作的方法

标题:PHP实现数组差集操作的方法在PHP中,数组是一种非常常用的数据结构,它可以帮助我们存储和操作多个元素。在实际开发中,有时候我们需要对数组进行一些操作,比如取两个数组的差集。本文将介绍如何使用PHP实现数组差集操作的方法,并提供具体
PHP实现数组差集操作的方法
2024-03-13

Python实现计算两个时间之间相差天数的方法

本文实例讲述了Python实现计算两个时间之间相差天数的方法。分享给大家供大家参考,具体如下:#-*- encoding:UTF-8 -*- from datetime import date import time nowtime = d
2022-06-04

CSS Positions布局实现多列等高布局的方法

在网页开发中,实现多列等高布局是一个常见的需求。传统的方法是使用JavaScript来实现,但是这种方法存在兼容性和性能问题。现在我们可以通过使用CSS Positions布局来实现多列等高布局,不仅简单易用,而且效果良好。实现多列等高布局
2023-10-21

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录