二维数组中列值的差异(Python)

0 投票
1 回答
1369 浏览
提问于 2025-04-18 11:48

你好,我正在尝试写一个函数,这个函数的输入是一个二维数组,类似于一个列表的列表。这个数组的前两列是员工的ID号码,后面的12列表示每个员工每个月工作的小时数。我想找出每个员工每个月之间的变化情况,不过我现在的代码有点粗糙。它的输出是一个包含所有数字差异的单一列表(包括ID)。我想要的输出是每一行的一个列表,里面有ID号码,后面跟着每个月之间的变化(第一个月的变化总是零,因为没有前一个月可以减去)。

[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
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 - 列表中元素之间的差异

撰写回答