我有一个字符串列表,其中有些没有。 我想获得一个所有无索引的新列表。
list = ['a', 'b', None, 'c' ,None, 'd']
使用函数索引
n = list.index(None)
只会返回第一个出现,n = 2,而我想看到n = [2,4]。 谢谢。
答案 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]
>>>