利用python求相邻数的方法示例


Posted in Python onAugust 18, 2017

前言

本文主要给大家介绍了关于利用python求相邻数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

什么是相邻数?

比如5,相邻数为4和6,和5相差1的数,连续相差为1的一组数

需求:

遍历inputList 所有数字,取出所有数字,判断是否有相邻数, 不相邻数字 和 相邻数字 都以 “数组”形式 添加到 outputList 中, 并且 每个“数组” 里 第一位 递减 补全两位数,末位 递增 补全两位数, 每一个数不能小于0, 不能大于 400

( 提示: 在inputList 中 "12,13" 是相邻的数字,视为一组, 需要以[10, 11, 12, 13, 14, 15] 数组形式添加到outputList 中,而 “3”没有相邻的数,也视为一组,需要以[1, 2, 3, 4, 5]数组形式添加到outputList中 )

输入:

inputList = [0, 3, 5, 6, 7, 9, 12, 13, 15, 16, 17, 19, 20, 21, 22, 25, 27, 29, 30, 32, 33, 36, 39, 40, 43, 44, 46, 47, 48, 53, 54, 57, 58, 60, 62, 64, 65, 66, 67, 72, 74, 75, 76, 77, 78, 80, 82, 84, 85, 86, 89, 95, 96, 97, 98, 103, 104, 107, 108, 110, 111, 114, 116, 117, 118, 
120, 121, 122, 124, 127, 132, 135, 137, 138, 139, 140, 145, 146, 148, 149, 150, 151, 155, 156, 160, 161, 166, 167, 170, 171, 172, 175, 178, 179, 180, 181, 182, 183, 184, 186, 188, 189, 190, 193, 195, 196, 198, 202, 205, 208, 210, 211, 213, 214, 215, 217, 
221, 226, 227, 228, 233, 234, 235, 240, 241, 246, 247, 249, 255, 257, 258, 261, 262, 263, 267, 268, 269, 270, 271, 272, 275, 278, 280, 282, 283, 284, 286, 287, 289, 291, 292, 295, 296, 298, 300, 302, 303, 304, 305, 306, 310, 315, 317, 319, 320, 321, 322, 
323, 324, 325, 326, 328, 331, 336, 339, 341, 342, 344, 346, 349, 354, 355, 356, 362, 363, 365, 366, 367, 368, 371, 374, 376, 378, 382, 383, 388, 390, 393, 396, 399]

输出 :

outputList = [[0, 1, 2] , [1, 2, 3, 4, 5], [3, 4, 5, 6, 7, 8, 9], [7, 8, 9, 10, 11],[10, 11, 12, 13, 14, 15] , ........此处省略]

那,如何解决这个问题?

1. 设置一个值,指向index=0, start_index = 0

2. 初始化一个中间列表median = [ ] , 一个保存结果列表 result_l = [ ]

3. for循环开始, start_index 指向每一个相邻数的开头

4. 通过索引指向的值和索引后指向的值进行差值比较,步长不为1的,start_index移动到这个值上

5. 循环往复,获得相邻列表

6. 通过map函数,对每一个相邻列表进行前后各插入两个相邻数

7. 通过列表解析, 剔除不满足条件的相邻数

示例代码

#!/usr/bin/python3
 
__author__ = 'beimenchuixue'
__blog__ = 'http://www.cnblogs.com/2bjiujiu/'
 
 
def go_cha_ru(new_l):
 """往列表中前后个插入两个相邻数,通过列表解析去除小于0的和大于400的数"""
 new_l.insert(0, new_l[0] - 1)
 new_l.insert(0, new_l[0] - 1)
 new_l.append(new_l[len(new_l) - 1] + 1)
 new_l.append(new_l[len(new_l) - 1] + 1)
 return [i for i in new_l if 0 <= i <= 400]
 
 
def go_xiang_lin(raw_l):
 """获取相邻数"""
 start_index = 0
 result_l = []
 median = []
  
 # 索引从start_index起,到最后
 for raw_index in range(len(raw_l)):
  # 判断是否for循环到指定位置
  if start_index == raw_index:
   # 初始移动位置参数
   index = 0
   while True:
    # 指针指向的起始值
    start_value = raw_l[start_index]
    # 如果指针指向最后一个位置,开始值=最后一个值
    if start_index == len(raw_l)-1:
     end_value = start_value
    else:
     # 最后一个值 = 初始值 + 位置参数值
     end_value = raw_l[start_index + index]
    # 通过初始值 + 位置参数值 是否等于 最后一个值,判断是否为相邻数,如果是,添加到中间列表
    if start_value + index == end_value:
     median.append(end_value)
     # 位置参数 + 1
     index += 1
    else:
     # 如果不是,初始指针指向 移动位置参数个单位
     start_index += index
     # 把每主相邻数添加到结果列表
     result_l.append(median)
     median = []
     break
 # 通过高阶函数,对结果集中每个相邻数列表进行插值操作
 return map(go_cha_ru, result_l)
 
if __name__ == '__main__':
 input_list = [0, 3, 5, 6, 7, 9,
     12, 13, 15, 16, 17, 19, 20, 21, 22, 25,
     27, 29, 30, 32, 33, 36, 39, 40, 43, 44, 46, 47, 48, 53, 54,
     57, 58, 60, 62, 64, 65, 66, 67, 72, 74, 75, 76, 77, 78, 80, 82,
     84, 85, 86, 89, 95, 96, 97, 98, 103, 104, 107, 108, 110, 111, 114,
     116, 117, 118, 120, 121, 122, 124, 127, 132, 135, 137, 138, 139, 140,
     145, 146, 148, 149, 150, 151, 155, 156, 160, 161, 166, 167, 170, 171,
     172, 175, 178, 179, 180, 181, 182, 183, 184, 186, 188, 189, 190, 193,
     195, 196, 198, 202, 205, 208, 210, 211, 213, 214, 215, 217, 221, 226,
     227, 228, 233, 234, 235, 240, 241, 246, 247, 249, 255, 257, 258, 261,
     262, 263, 267, 268, 269, 270, 271, 272, 275, 278, 280, 282, 283, 284,
     286, 287, 289, 291, 292, 295, 296, 298, 300, 302, 303, 304, 305, 306,
     310, 315, 317, 319, 320, 321, 322, 323, 324, 325, 326, 328, 331, 336,
     339, 341, 342, 344, 346, 349, 354, 355, 356, 362, 363, 365, 366, 367,
     368, 371, 374, 376, 378, 382, 383, 388, 390, 393, 396, 399]
 # 结果
 output_list = list(go_xiang_lin(input_list))
 print(output_list)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
从零学python系列之数据处理编程实例(二)
May 22 Python
Python3基础之函数用法
Aug 13 Python
python实现在控制台输入密码不显示的方法
Jul 02 Python
Django rest framework实现分页的示例
May 24 Python
python3将视频流保存为本地视频文件
Jun 20 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
详解python statistics模块及函数用法
Oct 27 Python
关于Python中定制类的比较运算实例
Dec 19 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
Apr 01 Python
python基于exchange函数发送邮件过程详解
Nov 06 Python
彻底解决pip下载pytorch慢的问题方法
Mar 01 Python
anaconda python3.8安装后降级
Jun 11 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 #Python
Python 中 Virtualenv 和 pip 的简单用法详解
Aug 18 #Python
Python3编程实现获取阿里云ECS实例及监控的方法
Aug 18 #Python
浅谈django开发者模式中的autoreload是如何实现的
Aug 18 #Python
Python绑定方法与非绑定方法详解
Aug 18 #Python
python字典DICT类型合并详解
Aug 17 #Python
Python时间的精准正则匹配方法分析
Aug 17 #Python
You might like
PHP 图片文件上传实现代码
2010/12/29 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
javascript时间函数大全
2014/06/30 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
js实现移动端轮播图
2020/12/21 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
python中 * 的用法详解
2019/07/10 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
幼儿运动会邀请函
2014/01/17 职场文书
单位创先争优活动方案
2014/01/26 职场文书
小学六年级学生评语
2014/04/22 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
2015年采购工作总结
2015/04/10 职场文书
四十九个javascript小知识实用技巧
2021/11/20 Javascript
Python matplotlib多个子图绘制整合
2022/04/13 Python