python-3.x - 检查两个连续列表数字的乘积是否等于另一个数字
问题描述
代码打印出 2 和 3,因为它们的乘积等于变量 num。但是如果 l=[1,3,4,5,6,7,8,9,10] 呢?列表中没有数字乘以 6,所以我想打印两个最接近的数字。
l=[1,2,3,4,5,6,7,8,9,10]
num=6
index=0
while index+1<len(l):
if l[index]*l[index+1]==num:
print(l[index],l[index+1])
index+=1
解决方案
要查找与您的产品最接近的货币对的索引,num
可以执行以下操作:
代码:
min((abs(x*y - num), i) for i, (x, y) in enumerate(zip(l, l[1:])))[1]
说什么?
这使用生成器表达式并min()
找到其乘积最接近 num 的对。在那个链中是:
zip(l, l[1:])
它为每个邻居对生成一个元组。然后enumerate
用于生成索引。然后将乘积的绝对值 - num 传递给min()
推荐阅读
- wpf - WPF:如何创建像“Telerik UI for WPF”这样的 UI 库?
- python - 具有定义函数的等高线图,其中输入为向量
- macos - 如何在 swift 和 Hal 驱动程序编写的应用程序之间共享数据
- shell - ZSH:读取时从内部输出的标准输出丢失
- c# - c# adobe acrobat SDK:SDK退出后文件仍被锁定
- r - 在R中没有标题的数据框前面插入一列
- python - 我如何将 Django - Tenant 与 Django Haystack 集成
- elasticsearch - 如何使用自定义序列化程序序列化类型信息也用于使用 NEST 和 Elasticsearch 的子文档
- javascript - 在反应页面之间加载微调器
- html - 带有表格的简单 HTML 联系方式表单