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

时间:2018-10-18 08:13:35

标签: python list nonetype

我有一个字符串列表,其中有些没有。 我想获得一个所有无索引的新列表。

list = ['a', 'b', None, 'c' ,None, 'd']

使用函数索引

n = list.index(None)

只会返回第一个出现,n = 2,而我想看到n = [2,4]。 谢谢。

3 个答案:

答案 0 :(得分:5)

尝试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简单,高效。

答案 1 :(得分:0)

更快的方式。在清单很长的情况下非常有用。

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]

答案 2 :(得分:0)

有些不同,但是不使用列表理解:

>>> 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]
>>>