gpt4 book ai didi

python - 列表中两个切片的最小值/最大值/最大值

转载 作者:行者123 更新时间:2023-11-28 22:39:56 38 4
gpt4 key购买 nike

我有一个像 [3,10,4,3,9,15,6,13] 这样的列表,我想找到两个不重叠的系列/序列给出通过取最大-最小值可获得的最大值.它们必须是连续的,因此您不能从 1 中减去项目 3。但是您可以从 3 中减去索引 1。

所以在我的示例中,您将得到 [3,10] 和 [3,15] 对。你怎么能以编程方式做到这一点。这是我到目前为止得到的结果。

python :

l = [3,10,4,3,9,15,6,13]
pair1=[max(l), min(l)]
l.remove(max(l))
l.remove(min(l))
pair2=[max(l), min(l)]

这当然不是我想要的,但我不确定如何继续寻找两对。找到一对上面的代码可以正常工作,但不能找到两个,因为您通常会得到重叠的序列。

最佳答案

写这个很有趣:

import itertools as it

l = [3,10,4,3,9,15,6,13]

r=sorted(
map(lambda x: (x[0:2], x[2:4]),
sorted(it.imap(
lambda x: (min(x[0:2]), max(x[0:2]), min(x[2:4]), max(x[2:4])),
it.imap(lambda x: (l[x[0]], l[x[1]], l[x[2]], l[x[3]]),
it.combinations(range(len(l)), 4))),
key=lambda x: -(x[1]-x[0]+x[3]-x[2])))[0],
key=lambda x: x[0]-x[1])

print(r)

关于python - 列表中两个切片的最小值/最大值/最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34214299/

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