在 python 中的列表中查找所有 None 项的索引

find indexes of all None items in a list in python

我有一个字符串列表,其中一些是 None。 我想获得 None.

的所有索引的新列表
list = ['a', 'b', None, 'c' ,None, 'd']

使用函数索引

n = list.index(None)

只会return第一次出现,n=2,而我想看n=[2,4]。 谢谢。

尝试 enumerate:

l=[i for i,v in enumerate(list) if v == None]

range:

l=[i for i in range(len(list)) if list[i] == None]

两种情况:

print(l)

是:

[2,4]

重要说明: 将变量命名为现有的方法名称是不好的,它会覆盖它,(现在是 list),所以我更喜欢它作为l(或其他)

我推荐第一个示例,因为 enumerate 简单、高效。

更快的方式。在长列表的情况下非常有用。

list = ['a', 'b', None, 'c' ,None, 'd']
import numpy as np
print(np.where(np.array(list) == None)[0])

输出:

[2 4]

如果您需要索引列表:

print(np.where(np.array(list) == None)[0].tolist())
>>> [2, 4]

这里有些不同,但它不使用列表理解:

>>> l = ['a', 'b', None, 'c' ,None, 'd']
>>> out = []
>>> for _ in range(l.count(None)):
    out.append(l.index(None))
    l[l.index(None)] = "w"


>>> out
[2, 4]
>>>