返回顶部
首页 > 资讯 > 后端开发 > Python >利用Python实现外观数列求解
  • 609
分享到

利用Python实现外观数列求解

2024-04-02 19:04:59 609人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 引言2. 外观数列3. 代码思路3.1 提取输出的key3.2 提取每个key对应的value3.3 统计每个group对应的长度3.4 整合输出3.5 解决方案4. 总结

1. 引言

事情的由来是这样的,今天遇到一个非常有意思的题目,如下:

1–11–21–1211–111221–312211

观察上述数字,找出其中的规律,并尝试思考给出下一个数字?
哇偶,可以先仔细思考一下下。。。

2. 外观数列

外观数列是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。

前五项如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221
1 被读作  "one 1"  ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211。
依次类推。。>>>[key for key, group in groupby('AAAABBBCCDAABBB')]
[A, B, C, D, A, B]

找出规律后,我们可以很方便的知道第6项的数字为 312211, 第7项为 13112221。所以,我们可以编写一个函数,来自动帮我们生成这个数列的某一项。

3. 代码思路

经过思考,我们你可以总结出核心问题的求解在于我们需要统计出一组数字在序列中出现的次数。

3.1 提取输出的key

因为外观数列中每个子项都是统计数字key出现的次数,所以我们可以利用groupby函数来获取子项中需要描述的key值,

样例如下:

>>>[key for key, group in groupby('AAAABBBCCDAABBB')]
[A, B, C, D, A, B]

3.2 提取每个key对应的value

正如上述输出所展示的,我们使用groupby函数将同一key进行分组。因此,我们可以对每个key对应的value进行类型转换,

如下:

>>>[list(group) for key, group in groupby('AAAABBBCCDAABBB')]
[['A', 'A', 'A', 'A'], ['B', 'B', 'B'], ['C', 'C'], ['D'], ['A', 'A'], ['B', 'B', 'B']]

3.3 统计每个group对应的长度

经过上述转换,我们按照key值对数列中的子项进行了分组,进而我们可以获取每个group的长度,代码如下:

>>>[len(list(group)) for key, group in groupby('AAAABBBCCDAABBB')]
[4, 3, 2, 1, 2, 3]

3.4 整合输出

通过上述一步步的分析,我们已经很方便地使用groupby来实现我们需要的输出了,我们只需要整合每个group分组后的长度以及其key即可,

代码如下:

>>>[(len(list(group)),key) for key, group in groupby('AAAABBBCCDAABBB')]
[(4, 'A'), (3, 'B'), (2, 'C'), (1, 'D'), (2, 'A'), (3, 'B')]

3.5 解决方案

正如以上的分析,我们知道元组包含每个值的计数和值本身。我们可以使用上面的逻辑,用python来实现外观数列的求解!

代码如下:

我们这里打印该数列的前15项,即让参数iterator = 15,此时的输出如下:

4. 总结

本文通过一道非常有趣的题目引入了外观数列的定义,然后通过举例分析找出用Python实现该功能的快捷方式,最后给出了整个问题求解的样例代码。

到此这篇关于利用Python实现外观数列求解的文章就介绍到这了,更多相关Python外观数列求解内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 利用Python实现外观数列求解

本文链接: https://lsjlt.com/news/144217.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 利用Python实现外观数列求解
    目录1. 引言2. 外观数列3. 代码思路3.1 提取输出的key3.2 提取每个key对应的value3.3 统计每个group对应的长度3.4 整合输出3.5 解决方案4. 总结...
    99+
    2024-04-02
  • GoJava算法之外观数列实现方法示例详解
    目录外观数列方法一:遍历生成(Java)方法二:递归(Go)外观数列 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都...
    99+
    2022-11-13
    Go Java算法外观数列 Go Java算法
  • python实现整数序列求和
    目录python整数序列求和python常用的序列求和方法python整数序列求和 整数序列求和,用户输入一个正整数N,计算从1到N(包含1和N)相加之后的结果。 代码如下: n=i...
    99+
    2024-04-02
  • 悲观锁与乐观锁怎么利用Hibernate实现
    这篇文章将为大家详细讲解有关悲观锁与乐观锁怎么利用Hibernate实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。四种隔离机制不要忘记:(1,2,4,8)1.read-uncommitt...
    99+
    2023-05-31
    hibernate 悲观锁 乐观锁
  • Python利用Selenium实现自动观看学习通视频
    目录一、登录二、进行一个页面的视频观看三、所有视频的观看四、总代码其他一、登录 以信号与系统课程为例,直接输入网址则出现登录界面: 由于学号登录需要验证码,因此选择电话登录: ...
    99+
    2024-04-02
  • Python如何利用Selenium实现自动观看学习通视频
    这篇文章给大家分享的是有关Python如何利用Selenium实现自动观看学习通视频的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、登录以信号与系统课程为例,直接输入网址则出现登录界面:由于学号登录需要验证码,...
    99+
    2023-06-21
  • Java利用Jackson序列化实现数据脱敏详解
    目录1.背景2.目标3.主要实现3.1基于Jackson的自定义脱敏序列化实现3.2定义脱敏接口、以及工厂实现3.3常用的脱敏器实现3.4注解定义3.5定义脱敏符号4.使用样例&am...
    99+
    2023-05-13
    Java Jackson序列化实现数据脱敏 Java Jackson序列化 Java 数据脱敏
  • MyBatisPlus利用Service实现获取数据列表
    目录1. 简单介绍2. 接口说明3. 参数说明4. 实例代码4.1 不带任何参数的 list() 方法查询数据4.2 查询用户ID大于 10,小于 20 且性别为“男&r...
    99+
    2024-04-02
  • 利用Java实现调用http请求
    目录一、概述二、 Java调用第三方http接口的方式2.1、通过JDK网络类Java.net.HttpURLConnection2.2 通过apache common封装好的Htt...
    99+
    2024-04-02
  • 利用python实现数据分析
    1:文件内容格式为json的数据如何解析 import json,os,sys current_dir=os.path.abspath(".") filename=[file for file in...
    99+
    2022-06-04
    数据 python
  • Java利用Jackson序列化实现数据脱敏
    几天前使用了Jackson对数据的自定义序列化。突发灵感,利用此方法来简单实现接口返回数据脱敏,故写此文记录。 核心思想是利用Jackson的StdSerializer,@JsonS...
    99+
    2024-04-02
  • 怎么用Python实现等差数列
    今天小编给大家分享一下怎么用Python实现等差数列的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Python实现等差数列d...
    99+
    2023-07-04
  • 利用virtualenv实现Python
    由于开发需求,需要Python2和Python3共存,利用当下最流行的虚拟环境工具virtualenv实现。#安装virtualenv pip install virtualenv #使用virtualenv创建虚拟环境 virtualen...
    99+
    2023-01-31
    virtualenv Python
  • Python实现奇数列与偶数列调换的方法详解
    目录一、前言二、实现过程方法一方法二方法三三、总结一、前言 前几天在Python铂金交流群【瑜亮老师】给大家出了一道Pandas数据处理题目,使用Python实现df的奇数列与偶数列...
    99+
    2024-04-02
  • C利用语言实现数据结构之队列
    目录一、链队列二、链队的表示三、链队的基本操作1. 链队的初始化2. 链队的销毁3. 入队4. 出队四、顺序队列五、循环队列1. 初始化2. 求队列长度3. 入队4. 出队 前言: ...
    99+
    2024-04-02
  • MyBatisPlus如何利用Service实现获取数据列表
    这篇文章主要介绍“MyBatisPlus如何利用Service实现获取数据列表”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MyBatisPlus如何利用Service实现获取数据列表”文章能帮助大...
    99+
    2023-07-02
  • 利用Hadoop实现求共同好友的示例详解
    目录前言业务分析实现思路分析编码实现1、第一个map类2、第一个Reduce类3、第一个Job类4、第二个map类5、第二个Reducer类6、第二个Job类前言 在很多社交APP中...
    99+
    2024-04-02
  • 如何利用python实现列表嵌套字典取值
    目录一、实例二、解决思路三、代码示例一、实例 将以下列表的backup_unit_id全部提取出来 示例: dbs = [{         "backup_unit_id": 16...
    99+
    2024-04-02
  • 怎么利用python实现列表嵌套字典取值
    这篇文章主要介绍了怎么利用python实现列表嵌套字典取值的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用python实现列表嵌套字典取值文章都会有所收获,下面我们一起来看看吧。一、实例将以下列表的bac...
    99+
    2023-07-02
  • 如何利用PHP实现游戏需求
    对不起,我无法提供实现特定编程功能的具体代码示例。如果您有任何其他问题或需要关于PHP编程的一般指导,请随时告诉我。我会很乐意提供帮助。以上就是如何利用PHP实现游戏需求的详细内容,更...
    99+
    2024-03-10
    php 游戏实现
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作