首页 > 解决方案 > 逐列搜索数组中的元素并返回不包含该元素的列的索引

问题描述

我有一个大小为 76 x 273 的二维数组。

我想在所有 273 列中搜索“0”并返回不包含“0”的列的索引。在 python 中最快的方法是什么?

预先感谢

标签: python-3.x

解决方案


没有比检查所有单元格更快的方法了。如果您的列是第一个索引(即这会为您提供一列:),array[0]那么您可以使用all,它检查迭代中的所有值是否都是True. True因为在 Python 中,除了 0和 0之外的所有整数在转换为时都算作Falsea boolean,所以这是可行的,但它仍然不是更快,因为它仍然需要检查每个单元格。

all

for i in range(len(array)): # or use 273 instead of len(array)
    if not all(array[i]):
        print(i, "contains 0")

如果您的第一个索引是行:

for i in range(273): # or use len(array[0])
    for j in range(len(array)): # or use 76
        if array[j][i] == 0:
            print(i, "contains 0")

请注意,第二种方法的缓存效率较低,但如果您的数据结构如下,则没有更好的方法。

如果要返回包含零的列而不是打印它们,可以将其存储到列表中,例如:

def zero_cols(array):
    output = []
    for i in range(273):
         for j in range(len(array)):
             if array[j][i] == 0:
                 output.append(i)
    return output

推荐阅读