在python中函数达到其最小负值的返回值

2024-10-03 23:20:31 发布

您现在位置:Python中文网/ 问答频道 /正文

已经很晚了,所以我不知道会有多清楚。你知道吗

我有一个函数f(x),我想从一个列表中得到x的值,其中f(x)达到了最小的负值,即:

x = [0, 2, 4, 6]
f(x) = [200, 0, -3, -1000]

在这个例子中,我想返回x中的值4,它给了我-3。我不想要绝对最小值(-1000),而是绝对值最小的负值。你知道吗

我希望这有道理,非常感谢你的帮助。你知道吗

更新

我只是想把问题简单化,也许太简单了。事情是这样的:我有一个形成多边形的2D点列表,我想顺时针排列它们。你知道吗

为此,我取每个点和其他点之间的叉积,然后根据从上一点得到的负叉积(它告诉我旋转的感觉)和最小的绝对值(它告诉我它真的是下一个点)来选择下一个点。你知道吗

所以说:

x = [(1,1), (-1,-1), (-1,1), (1,-1)]

我想得到

x = [(1,1), (1,-1), (-1,-1), (-1,1)]

我在做什么

for point in x:
   cp = [numpy.cross(point, p) for p in x]
   # and then some magic to select the right point...

再次感谢你的帮助。你知道吗


Tags: 函数in列表for多边形事情cp例子
3条回答
a = [0, 2, 4, 6]
b = [200, 0, -3, -1000]

value = max([x for x in b if x < 0])
print a[b.index(value)]
x = [0, 2, 4, 6]
fx = [200, 0, -3, -1000]

print(x[fx.index(max(n for n in fx if n < 0))])

试试这个:

inputs = [0, 2, 4, 6]
outputs = [200, 0, -3, -1000]
max = min(outputs)
for n in outputs:
    if n >= 0:
        continue
    if n > max:
        max = n
print inputs[outputs.index(max)]

相关问题 更多 >