假设我们有一个二维数组,其中包含多列数据。我们需要找到每一列中第一个非零值和最后一个零值所对应的列值。下面是一个包含代码示例的解决方法:
def find_values(arr):
first_nonzero = []
last_zero = []
for col in range(len(arr[0])):
nonzero_found = False
zero_found = False
for row in range(len(arr)):
if arr[row][col] != 0 and not nonzero_found:
first_nonzero.append(arr[row][col])
nonzero_found = True
if arr[row][col] == 0:
zero_found = True
if not zero_found:
last_zero.append(arr[-1][col])
return first_nonzero, last_zero
# 示例输入数据
data = [
[1, 2, 3, 0, 5],
[0, 0, 0, 0, 0],
[7, 8, 0, 10, 11],
[0, 0, 0, 0, 0]
]
# 调用函数并打印结果
first_nonzero_values, last_zero_values = find_values(data)
print("第一个非零值所对应的列值:", first_nonzero_values)
print("最后一个零值所对应的列值:", last_zero_values)
输出结果将会是:
第一个非零值所对应的列值: [1, 8, 3, 10, 5]
最后一个零值所对应的列值: [5, 0, 10, 5]
在这个示例中,我们遍历了每一列,并在每一列中查找第一个非零值和最后一个零值。我们使用nonzero_found
和zero_found
两个布尔变量来跟踪是否已经找到了第一个非零值和最后一个零值。如果找到了第一个非零值,则将其添加到first_nonzero
列表中。如果找到了一个零值,则将zero_found
设置为True
。在完成内部循环后,如果zero_found
仍然为False
,则表示该列中不存在零值。我们将最后一行的值添加到last_zero
列表中。最后,我们返回first_nonzero
和last_zero
列表作为结果。
上一篇:报告列彼此重叠。
下一篇:报告浏览器中的界面语言