python – 序列中相邻元素之间的比较
我需要一个序列中元素之间的比较索引.该索引是序列中相邻元素之间所有绝对比较的总和与具有其长度的序列可具有的最高值之间的商.
例如,序列s1 = [0,1,2]和s2 = [0,2,1]分别具有绝对比较[1,1]和[2,1].没有长度为3的序列的其他组合,绝对比较和的值高于3.因此,对于s1和s2,比较指数应为2/3和3/3.
这些序列总是具有从0到长度为1的整数,并且可以具有非相邻的重复元素,例如[0,1,0,1,0].这些序列在其较低和最高元素值之间具有所有整数.
我需要一个函数来计算绝对比较的最高值和给定长度的序列可以有的.我写的函数(最高)返回错误的结果.我写了这段代码:
def aux_pairs(seq):
n = 2
return [seq[i:i + n] for i in range(len(seq) - (n - 1))]
def comparisons_sum(seq):
return sum([abs(el[-1] - el[0]) for el in aux_pairs(seq)])
def highest(seq):
card = len(seq)
pair = [0, card - 1]
r = (pair * (card / 2))
if card & 1 == 1:
r.append(0)
return comparisons_sum(r)
def comparison_index(seq):
return comparisons_sum(seq) / float(highest(seq))