2D数组中的列值之间的差异(Python)

时间:2014-07-02 00:02:23

标签: python arrays

您好我正在尝试编写一个函数,该函数的输入是2D数组,就像列表一样。数组的前两列是ID号,但其余12列表示每个员工每月工作的小时数。我想找到每个员工的月到月偏差,但是,我目前使用的代码有点未定义。它的输出是所有数字(包括ID)之间差异的单个列表。我试图将输出作为2D数组中每一行的列表,其中ID编号后跟月月偏差(第一个月始终为零,因为上个月没有减去它):< / p>

[123, 34567, 0, 3, 4, 12, 13, 5, 8, 10, 11, 19, 2, 6] 

我的代码目前如下:

def month_to_month(A):
X = []
for i in range(len(A)):
    for j in range(len(A[i])):
        X += [abs(A[i][j] - A[i][j-1])]
return X

函数首先遍历每一行,然后遍历每一列,找到列值之间的绝对差值,并将这些值添加到列表X.我需要帮助改进这一点,但是,只减去每月的值,并且输出将每个员工的数据作为单个列表返回,如上例所示。我尝试使用递归来减去连续的列值但是效果不好。我非常感谢任何输入!

1 个答案:

答案 0 :(得分:0)

def month_to_month(self):
    A = [123, 34567, 50, 53, 49, 61, 48, 53, 61, 71, 60, 79, 81, 87] 
    B = A[-(len(A) - 2):]
    X = [A[0], A[1], 0]
    X.extend([abs(j-i) for i,j in zip(B, B[1:])])
    print(X)

在看到类似的问题Python - Differences between elements of a list

之后,我把这个答案放在了一起