如果一维数组等于其相邻数组的算术平均值,则为一维数组的计数

2024-09-30 18:23:51 发布

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

我想找出一个数组中的数字,它等于它们的近邻的算术平均值。这里的转折点是,如果[I-1]或[I+1]不存在,则使用0

例如:

a =  [2,4,6,8,2,5]
a[0] = (0 + 4)/2 = 2 ----count 1
a[1] = (2 + 6)/2 = 4---- count 2
a[5] = (2 + 0)/2 != 5 ----no count

如果不是,则计数应为0。我已经编写了下面的代码,但它不能适用于所有的数组,就像这一个。我怎么做

a = [100, 110, 120, 130, 140, 150, 160, 170, 180, 190]

我的代码:

def countMeans(a):
    count = 0
    for i in range(1, len(a)-1):
        if a[i-1]+ a[i+1] is 2 * a[i]:
            count += 1
    return count

Tags: no代码inforlendefcountrange
3条回答

比较值时使用==而不是is。使用以下代码段:

def countMeans(a):
    count = 0
    for i in range(1, len(a)-1):
        if a[i-1]+ a[i+1] == 2 * a[i]:
            count += 1
    return count

记住is运算符定义两个变量是否指向同一对象,而==符号检查两个变量的值是否相同

根据您的新更新,请使用以下代码:

def countMeans(a):
    count = 0
    if len(a) > 1:
        for i in range(0, len(a)):
            val1 = 0 if i == 0 else a[i-1]
            try:
                val2 = a[i+1]
            except:
                val2 = 0
            if val1 + val2 == 2 * a[i]:
                count += 1
    else:
        count = 1 if a[0] == 0 else 0
    return count

如果我做对了,请告诉我

def countMeans(a):
    count = 0
    if (a[1]/2) == a[0]:
        count +=1
    for i in range(1, len(a)-1):
        if (a[i-1] + a[i+1])/2 == a[i]:
            count += 1
    if (a[-2]/2) == a[-1]:
        count +=1
    return count

a =  [2,4,6,8,2,5]
print (countMeans(a))

a = [100, 110, 120, 130, 140, 150, 160, 170, 180, 190]
print (countMeans(a))

其输出为:

3
8

相关问题 更多 >