首页 > 解决方案 > 仅使用列表和循环的单调函数(没有 numpy 和箭头)

问题描述

monotonic_function 输入:列表输出:返回布尔值列表(真/假),例如:

    sequence_monotonicity([1,2,3,4,5,6]) return [True,True,False,False]
    sequence_monotonicity([1,2,2,3]) return [True,False,False,False]
    sequence_monotonicity([1,0,-1,1]) return [False,False,False,False]

规则是:我不能使用所有、任何/或导入任何东西(比如 numpy)

如果 a(n-1) <= a(n) 正确,则返回 True 到列表的第一位,否则返回:False

if (an-1) < a(n) 是正确的,它返回 True 到列表的第二位,否则:返回 false

如果 a(n-1) >=a(n) 正确,则返回 True 到列表的第三位,否则:返回:False

如果 a(n-1) > a(n) 正确,则返回 True 到列表的第 4 位,否则:返回 False

我试图在没有numpy“thedumbest”方式的情况下做到这一点,但我没有得到正确的答案

这就是我尝试过的:

    def true_false_checker(x):
        if False in x:
            return False
        else:
            return True

    def sequence_monotonicity(l):
        z =[]
        x = []
        for i in range(1,len(l)):
            if l[i-1] <= l[i]:
                x.append(True)
            else:
                x.append(False)
            if true_false_checker(x) == True:
                z.append(True)
            else:
                z.append(False)
            if l[i-1] < l[i]:
                x.append(True)
            else:
                x.append(False)
            if true_false_checker(x) == True:
                z.append(True)
            if l[i-1] >= l[i]:
                x.append(True)
            else:
                x.append(False)
            if true_false_checker(x) == True:
                z.append(True)    
            if l[i-1] > l[i]:
                x.append(True)
            else:
                x.append(False)    
            if true_false_checker(x) == True:
                z.append(True)    
        return z
'''
    
                

标签: pythonlist

解决方案


那这个呢?

def seq_mon(l):
    r = [True]*4
    for x in [a-b for a,b in zip(l[:-1],l[1:])]:
        r[0] &= x<=0
        r[1] &= x<0
        r[2] &= x>=0
        r[3] &= x>0
    return r

推荐阅读