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)
解决这个问题的一个简单方法是对 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)