IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Python求两个相邻数最大的积并返回这两个数 -> 正文阅读

[数据结构与算法]Python求两个相邻数最大的积并返回这两个数

有一列表list_1=[3,2,-4,5,-2,6,4],求列表里,相邻两个数最大的积,并返回这两个数。
那么首先,我们整理一下思路,这是一个有固定顺序的,所以不能直接从大到小排序取前2个相乘。
所以我们需要先计算出积,并把积排序。所以有以下几种解法
1.最简单的思路,把列表里相邻两个数循环相乘一次,并实时更新结果。
左边的数L,右边的数R,积P那么初始化一下

L=0
R=1
P=0
for i in range(len(list_1)-1):
      if P<list_1[i]*list_1[i+1]:
            L=list_1[i]
            R=list_1[i+1]
            P=list_1[i]*list_1[i+1]
print(L,R,P)

那么有没有稍微简洁点的解法?
2.利用lambda函数,结合map,并从小到大排序,然后取最大的结果:
为了方便阅读,我在list_1前面换行了,大家若是复制的,可以手动修正

print(sorted(list(map(lambda x,y:(x,y,x*y),
list_1,list_1[1:])),key=lambda x:x[2])[-1])

解释一下:lambda x,y入参 :x,y,x*y出参输出左边的数,右边的数和积。输出的是数组所以加个括号用元组方式保存,map函数会自动对齐,所以只需要从list_1的0位乘1位开始循环,到最后一位的时候,右边的数已经超出界限自动忽略了。map函数结果出来是一个元组组成的列表,所以我们 加一个shorted排个序,按列表里元组的积排序,所以key=lambda x:x[2]意思是取元组里第3个元素排序,默认是从小到大,所以最后打印的时候,再从列表里打印最大的积所在的列表,所以再切片[-1]即可输出正确结果。
代码已经在pc短检查过,没有问题了

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:27:04  更:2021-09-18 10:27:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 14:45:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码