python - Python 列表中第一次出现零的索引

标签 python python-3.x list numpy numpy-ndarray

我有一个这样的列表,

import numpy as np
myList = [0.0 , 0.0, 0.0, 2.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 3.0, 0.0]

我可以找到非零出现的索引,如下所示。

I = np.nonzero(myList)
for i in I:
  print(i)

我可以找到零的第一次出现的索引吗?如下所示,

[0, 5, 7, 11]

最佳答案

由于 NumPy 已标记,这里有两种方法 -

In [44]: m = np.r_[False,np.equal(myList,0)]

In [45]: np.flatnonzero(m[:-1]<m[1:])
Out[45]: array([ 0,  5,  7, 11])

如果输入是数组,则更容易获得等效掩码m -

a = np.array(myList)
m = np.r_[False,a==0]

使用 np.diff 实现单行的另一种方法 -

In [46]: np.flatnonzero(np.diff(np.r_[0,np.equal(myList,0)])==1)
Out[46]: array([ 0,  5,  7, 11])

使用数组输入再次变得更容易a -

In [52]: np.flatnonzero(np.diff(np.r_[0,a==0])==1)
Out[52]: array([ 0,  5,  7, 11])

关于python - Python 列表中第一次出现零的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58890548/

相关文章:

python - 是否可以编写 python 脚本来进行路由器配置而无需远程登录到路由器?

python - 毕竟,在 Linux 上设置 Tensorflow 的正确方法是什么?

python - Pandas df.plot 子图上的多个传说?

java - 如何使用 spring boot java 将包含列表的 json 保存到 mysql

C# 使用索引、对象和 DoStuff()/to 数组列出 Lambda

python - 在 Python 中创建出版质量的几何图形

python - SQLAlchemy 对一个类的多个身份进行多态

python - 尝试使用 QT 将 .ui 文件转换为 .py 文件,出现错误 ImportError : DLL load failed: %1 is not a valid Win32 application

python-3.x - python SDK 上的 Azure Webjobs

r - 访问 R 中对象中的列表(轮廓函数)