首页 > 解决方案 > 检查两个连续列表数字的乘积是否等于另一个数字

问题描述

代码打印出 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

标签: python-3.xlistloops

解决方案


要查找与您的产品最接近的货币对的索引,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()


推荐阅读