List 清单的高级比较

List 清单的高级比较,list,python-3.x,List,Python 3.x,我目前正在为一个学校项目制定一个计划,该项目旨在帮助农民减少过度施肥(这在丹麦是一件大事)。该计划的工作方式是,你输入一些关于你的田地的信息(NPK含量、田地大小、泥土类型和其他东西),然后我就可以将他们田地的营养含量与推荐量进行比较。然后我可以为这个领域创造理想的理论肥料成分 这是我能做的,但这里是困难的部分 我有一长串丹麦可用的肥料,我想让我的程序将其中10种与我理论上的理想成分进行比较,然后自动选择最适合的一种 我真的不知道该怎么做 我编排肥料成分的方式如下所示 >>>p

我目前正在为一个学校项目制定一个计划,该项目旨在帮助农民减少过度施肥(这在丹麦是一件大事)。该计划的工作方式是,你输入一些关于你的田地的信息(NPK含量、田地大小、泥土类型和其他东西),然后我就可以将他们田地的营养含量与推荐量进行比较。然后我可以为这个领域创造理想的理论肥料成分

这是我能做的,但这里是困难的部分

我有一长串丹麦可用的肥料,我想让我的程序将其中10种与我理论上的理想成分进行比较,然后自动选择最适合的一种

我真的不知道该怎么做

我编排肥料成分的方式如下所示

>>>print(idealfertilizercomp)
[43.15177154944473, 3.9661554732945534, 43.62771020624008, 4.230565838180857, 5.023796932839768]
每个数字以百分比表示一个元素。例如第一个数字43.15177154944473,这是我在肥料中需要的钾含量,单位为%

TL;博士:
我如何制作一个程序或函数,将一个整数列表与一个完整的其他整数列表进行比较,然后选择最适合的一个?

因此,当我吃晚饭时,我想出了一种方法,可以按比例比较多个列表:

  def numeric(x):
    if x >= 0:
        return x
    else:
        return -x


def comparelists(x,y):
    z1 = numeric(x[0]-y[0])
    z2 = numeric(x[1]-y[1])
    z3 = numeric(x[2]-y[2])
    z4 = numeric(x[3]-y[3])
    z5 = numeric(x[4]-y[4])
    zt = z1+z2+z3+z4+z5
    return zt


def compare2inproportion(x, y, z):
    n1 = (comparelists(x, y))
    n2 = (comparelists(x, z))
    print(n1)
    print(n2)

    if n1 < n2:
        print(y, "is closer to", x, "than", z)
    elif n1 > n2:
        print(z, "is closer to", x, "than", y)
    else:
        print("Both", y, "and", z, "are equally close to", x)

idealfertilizer = [1, 2, 3, 4, 5]
fertilizer1 = [2, 3, 4, 5, 6]
fertilizer2 = [5, 4, 3, 2, 1]

compare2inproportion(idealfertilizer, fertilizer1, fertilizer2)

很抱歉耽误您的时间,谢谢您的帮助。

什么是“最佳拟合”的标准?“最佳拟合”如“与原始值的偏差最小”,因此[1,2,3,4,5]与[0.99,1.99,2.99,3.99,4.99]的拟合度比[1,2,3,4,10]的拟合度更高,对我来说,这听起来不像是编码问题。你能展示一些代码,任何代码,并解释问题是什么吗?
[2, 3, 4, 5, 6] is closer to [1, 2, 3, 4, 5] than [5, 4, 3, 2, 1]