【问题标题】:Difference Between Column Values in 2D Array (Python)二维数组中列值之间的差异(Python)
【发布时间】:2015-08-03 11:04:58
【问题描述】:

您好,我正在尝试编写一个函数,该函数的输入是一个二维数组,设置类似于列表列表。数组的前两列是 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。但是,我需要帮助改进这一点,其中只减去每月值,并且输出将每个员工的数据作为单独的列表返回,如上例所示。我尝试使用递归来减去连续的列值,但效果不佳。我真的很感激任何意见!

【问题讨论】:

  • 您能发布一个包含输入和所需输出的示例吗?
  • 确定输入将是一个列表列表:[[123, 34567, 50, 53, 49, 61, 48, 53, 61, 71, 60, 79, 81, 87],. ..]
  • 输出将是 [123, 34567, 0, 3, 4, 12, 13, 5, 8, 10, 11, 19, 2, 6]。所以它保留了内部列表的前两个元素,但显示了每个剩余值之间的偏差

标签: python arrays


【解决方案1】:
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后,我把这个答案放在一起

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 2019-09-14
    相关资源
    最近更新 更多