gpt4 book ai didi

python - 比较列表中整数与给定值的差异

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:05 26 4
gpt4 key购买 nike

我的 Python 有点生疏,我在使用这个 super 简单的算法时遇到了麻烦。

我正在尝试编写一个函数,该函数采用两个参数(目标、值)来查找值中的哪个数字最接近目标数字;如果碰巧出现平局,则选择较小的数字。

这是我的进度,但我只选择了较小的数字,而没有实际比较列表中的值与目标的相对距离之间的差异。

所以,从本质上讲,我的函数实际上根本没有正确完成挑战,因为 47 实际上比 31 更接近 46;但是,如果列表中包含的数字假设为 45 和 47,那么它们与我的目标数字的距离相等,因此应该打印 45 而不是 47。

我更喜欢使用简单的 for/if/while 循环的答案,这样我才能真正练习我的技能。

也欢迎提供详细解释的其他更高级的答案。

编辑

你们几个非常好的答案,非常感谢;我正在对它们进行测试,并会选择最适合我的风格的一个,并将其余的用作引用,即使您有最好的单行答案也是如此。

target = 46
values = [1, 22, 31, 47, 87, 99]

def closest_to_target(target, values):

lower = []

for number in values:
if number < target:
lower.append(number)

if lower:
lowest = sorted(lower, reverse=True)[0]
return lowest

else:
return "Error handling array"


print closest_to_target(target, values)

最佳答案

您只选择小于目标的数字,而不考虑差异。对于您要求的基本代码示例,您想考虑对线性搜索进行修改,但只需跟踪最低差值和产生该最低差值的值。

    def closest(target, values):
smallest_difference = #a really large value to start
closest_number = None
for number in values:
diff = abs(number - target)
if diff == smallest_difference and number < closest_number:
closest_number = number
if diff < smallest_difference:
closest_number = number
smallest_difference = diff
return closest_number

此方法的优点是您无需创建额外的列表。

关于python - 比较列表中整数与给定值的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50071280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com