在python中签约

时间:2013-11-06 18:02:59

标签: python

我应该编写一个合同列表的程序。例如:

[1, 3, 4, 5, 1, 8, 6,]

必须缩小为如下所示的列表:

[1, 5, 1, 8, 6, 6]

我不知道如何做到这一点,并希望你们中的任何人都可以帮助我。

我给出了一个类似于l1 = [1,3,9,1,2,7,8]的列表,我应该将列表合同到一个新列表中,该列表包含旧列表noncecending细分肢体。它应该适用于给定的任何列表。

1 个答案:

答案 0 :(得分:0)

让我试着理解这个问题:

  

我给出了一个看起来像这样的列表l1 = [1,3,9,1,2,7,8]和im   应该通过获取第一个数字然后下一个数字来收缩列表   bigest和之后的最小,然后再次最大。这是   学校作业,我不知道如何做到这一点。英语   不是我的第一语言,这很难解释   作业:/

我认为“最大”和“最小”是指局部最大值和最小值。因此,如果il[i-1] < l[i],则索引l[i] > l[i+1]处的数字“最大”。相反,“最小”。所以基本上你正在寻找函数N -> N的极值。

如果这是你想要的,这应该有所帮助(考虑到起点和终点总是极值):

#! /usr/bin/python3.2

def sign(x): return 0 if not x else x // abs(x)

def extrema (l):
    return [l[0]] + [e for i, e in enumerate(l[:-1]) if i and sign(e-l[i-1])==sign(e-l[i+1])] + [l[-1]]

l1 = [1, 3, 9, 1, 2, 7, 8]
print (extrema (l1))