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

在python中查找列表中所有None项的索引,python,list,nonetype,Python,List,Nonetype,我有一个字符串列表,其中一些字符串没有。 我想得到一个包含所有索引的新列表 list = ['a', 'b', None, 'c' ,None, 'd'] 使用函数索引 n = list.index(None) 将只返回第一个外观,n=2,而我希望看到n=[2,4]。 谢谢。试试: 或: 两种情况: print(l) 是: 重要提示:将变量命名为一个现有的方法名是不好的,它会覆盖它(现在是list),所以我更喜欢将其命名为l(或其他) 我推荐第一个示例,因为枚举简单、高效。更快的方法。在长

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

list = ['a', 'b', None, 'c' ,None, 'd']
使用函数索引

n = list.index(None)
将只返回第一个外观,n=2,而我希望看到n=[2,4]。 谢谢。

试试:

或:

两种情况:

print(l)
是:

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


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

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

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

dir(内置)-将显示使用list作为var名称是错误的idea@Drako是的,每一种内置方法!!注释可能重复,它有一个警告
FutureWarning:与'None'的比较将导致将来的元素对象比较。
,在将来,这将不起作用。python 2中没有警告。7@MEdwin哦,我没有在python 3上测试,所以?@Black Thunder。我不知道为什么,但numpy阵列打印时没有逗号。这就是我使用.tolist()方法的原因。第一个方法只给我一个空列表。@MorZamir现在你有超过15个声誉,所以如果你想投票,你可以增加投票:-)今天看到你的评论很有趣,因为你有15个声誉,在收到一个1k视图的第一个问题的徽章之后。@MorZamir哇,恭喜你得到它,我也有。
[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]
>>>