найти индексы всех элементов None в списке в Python - PullRequest
0 голосов
/ 18 октября 2018

У меня есть список строк, некоторые из них отсутствуют.я хочу получить новый список всех индексов None.

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

с помощью функции index

n = list.index(None)

вернет только первое появление, n = 2, пока я хочувидеть n = [2,4].спасибо.

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Быстрее.Очень полезно в случае длинного списка.

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]
0 голосов
/ 18 октября 2018

Вот что-то другое, но он не использует понимание списка:

>>> 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]
>>> 
0 голосов
/ 18 октября 2018

Попробуйте 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)

Is:

[2,4]

Большое примечание: неправильно называть переменные именем существующего метода, который перезаписывает его (теперь это list), поэтомуя бы предпочел это как l (или что-то)

Я рекомендую первый пример, потому что enumerate - это легко, эффективно.

...