Индекс каждого первого истинного значения в python

откройте свой php.ini, убедитесь, что он установлен:

display_errors = On

перезагружает ваш сервер.

1
задан khelwood 11 March 2019 в 13:41
поделиться

3 ответа

ret = []
prev = False
for i, x in enumerate(t):
    if x and not prev:
        ret.append(i)
    prev =  x
print(ret)
0
ответ дан paras chauhan 11 March 2019 в 13:41
поделиться
t = [False, False, False, False, True, True, True, False, False,
     True, True, True, True, False, False, False, False, False,
     False, False, True, True, True, False]

indexes = []

counter = 0
for i in range(0, len(t)):
    el = t[i]
    if counter == 0:
        if el:
            indexes.append(i)
            counter = i
    else:
        if (el == True) and (i - counter == 1):
            indexes.append(i)
            counter = i
        else:
            break
print(indexes)
0
ответ дан kosist 11 March 2019 в 13:41
поделиться

Если вы в порядке со сторонним модулем pandas

import pandas as pd
t = [False, False, False, False, True, True, True, False, False,
     True, True, True, True, False, False, False, False, False,
     False, False, True, True, True, False]
s=pd.Series(t)
s = s.loc[s==True][s.shift(+1) != s]

Другое решение без панд, использующее defaultdict

from collections import defaultdict
d=defaultdict(list)
prev=t[0]
d[prev].append(0)
for idx,element in enumerate(t[1:],1):

    if element!=prev:
        d[element].append(idx)
        prev=element
print(d)

Выход:

defaultdict(list, {False: [0, 7, 13,23], True: [4, 9, 20]})
0
ответ дан mad_ 11 March 2019 в 13:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: