在 Python 中使用非零元素保存索引值

cie*_*uro 1 python arrays loops for-loop matrix

我有一个包含值的一维数组,我正在尝试使用 for 循环来识别与非零元素关联的索引值。

对于下面的代码,non_zero_elements 应该包含值 0、1 和 4,但我得到的是 [1, 0, 0, 4, 0]。

我尝试引用一个类似的线程(在 Numpy 中查找非零值/索引),但无法识别我的代码中的错误。

a = [1,2,0,0,4,0]
non_zero_elements = []
i = 0
for i in a:
    if a[i] != 0:
        non_zero_elements.append(i)
        print('The value',a[i],'in index',i,'is a non-zero element.')
        i = i + 1
print('Non-zero elements: ',non_zero_elements)
Run Code Online (Sandbox Code Playgroud)

Nic*_*ick 5

解决这个问题的一个简单方法是对 an 进行列表推导enumerate,它为您提供索引和值,允许您过滤非零值:

a = [1,2,0,0,4,0]
non_zero_elements = [i for i, v in enumerate(a) if v != 0]
print(non_zero_elements)
Run Code Online (Sandbox Code Playgroud)

输出:

[0, 1, 4]
Run Code Online (Sandbox Code Playgroud)