京公网安备 11010802034615号
经营许可证编号:京B2-20210330
利用python求相邻数的方法示例
本文主要给大家介绍了关于利用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)
总结
以上就是这篇文章的全部内容了.
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
【核心关键词】转化率、企业、策略、岗位、互联网、拆分、产品、运营、分析师、指标体系、数据分析、用户画像、数据诊断、产品 ...
2026-07-06在数据分析工作中,文本数据处理是高频刚需场景,用户评论、客服工单、日志信息、调研问卷、商品文案等数据都包含大量文本内容。 ...
2026-07-06 很多数据分析师写过无数个SELECT查询,但当被问到“如何新建一张表来固化中间数据”“创建视图和创建物理表有什么区别”“视 ...
2026-07-06在 CDA 数据分析师能力体系中,透视分析是数据探索、多维度汇总、业务复盘的核心基础技能。无论是 Excel 数据透视表,还是 Power ...
2026-07-03在市场竞争日趋激烈、获客成本持续攀升的当下,企业粗放式的“广撒网”获客模式早已无法适配经营需求。企业经营的核心逻辑,已经 ...
2026-07-03 很多数据分析师精通Excel函数和数据透视表,但当被问到“数据从哪里来”“表和视图有什么区别”“数据库管理系统和SQL是什么 ...
2026-07-03【核心关键词】运营、企业、核心、客户、新技术、数字化运营、数据分析、传统企业、人工录入、生产系统、技术人员、数据安全、 ...
2026-07-02在产品开发、项目立项、业务拓展、运营优化的工作中,市场调查、竞品分析、需求调研是三大核心基础工作。很多从业者容易将三者混 ...
2026-07-02 很多企业团队并非缺乏指标,而是陷入“指标失控”:仪表盘上堆满实时跳动的数据,却无法回答“当前瓶颈在哪、下一步该做什么 ...
2026-07-02在MySQL数据库运维与开发工作中,当单表数据量达到千万级、亿级后,会出现查询卡顿、索引失效、写入性能下降等问题。为优化性能 ...
2026-07-01在信息化建设、系统开发、数据分析、需求梳理的工作场景中,业务模型与逻辑模型是两个最基础、也最容易混淆的核心概念。很多项目 ...
2026-07-01 很多数据分析师能熟练计算各种指标,但当被问到“这些指标之间是什么关系”“为什么要选这个指标而不是那个”“指标体系的整 ...
2026-07-01【核心关键词】报表、数据源、客户、营销、业绩、销售、时效性、函数、可视化、运营、数据分析、数据报表、业务部门、数据运营 ...
2026-06-30在数据分析、商业预测、经济统计、运维监控等领域中,绝大多数业务数据都具备时间连续性特征,例如月度销售额、日度客流量、季度 ...
2026-06-30 很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“哪些指标在所有行业都适用”“哪些指标只对电商有意义”“二者如何搭 ...
2026-06-30在 SQL Server 安装、服务启动、数据库文件操作等场景中,经常会遇到 “实例已在使用” 类报错,不同触发场景的原因与处理方式差 ...
2026-06-29在Excel数据统计、财务核算、销售复盘、库存盘点等办公场景中,经常需要在数据透视表中实现一列数据乘以另一列数据的计算需求, ...
2026-06-29在数据分析中,指标是连接业务与数据的核心语言。它并非一个简单的数字,而是一个将模糊的业务需求(如“提升用户粘性”)转化为 ...
2026-06-29【核心关键词】大数据、零售商、消费者、供应链、运营、企业、产品、客户、数据模型、大数据平台、数据开发、系统运维、业务逻 ...
2026-06-26在物流配送、供应链履约、终端供货等业务场景中,送货率是衡量企业履约能力、服务质量、供应链稳定性的核心业务指标,直接关联客 ...
2026-06-26