Решение с использованием list.index
:
def indices(lst, element):
result = []
offset = -1
while True:
try:
offset = lst.index(element, offset+1)
except ValueError:
return result
result.append(offset)
Это намного быстрее, чем понимание списка с enumerate
, для больших списков. Это также намного медленнее, чем numpy
решение , если у вас уже есть массив, в противном случае стоимость преобразования перевешивает выигрыш в скорости (проверено на целочисленных списках с 100, 1000 и 10000 элементами).
ПРИМЕЧАНИЕ: Внимание, основанное на комментарии Chris_Rands: это решение быстрее, чем понимание списка, если результаты достаточно скудны, но если в списке много экземпляров искомого элемента (более ~ 15% списка, в тесте со списком из 1000 целых чисел), понимание списка быстрее.