Найти индексы первых положительных элементов в списке - python - PullRequest
1 голос
/ 24 мая 2019

Я пытаюсь найти индексы начальной позиции каждой последовательности положительных значений. Я получил только положительные значения в коде. Мой код выглядит следующим образом:

index = []
for i, x in enumerate(lst):
  if x > 0:
    index.append(i)
print index

Я ожидаю, что выходной сигнал [-1,1, 2,0, 3,0, 4,0, 5,0, -2,0, -3,0, -4,0, 5,5, 6,6, 7,7, 8,8, 9,9] будет [1, 8]

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Я думаю, что было бы лучше, если бы вы использовали понимание списка

index = [i for i, x in enumerate(lst) if x > 0]
0 голосов
/ 24 мая 2019

В настоящее время вы выбираете все индексы, где число положительное, вместо этого вы хотите собирать индекс только тогда, когда число переключается с отрицательного на положительное значение.

Кроме того, вы можете обрабатывать все отрицательные числа или числа, начинающиеся сот положительного значения также

def get_pos_indexes(lst):

    index = []

    #Iterate over the list using indexes
    for i in range(len(lst)-1):

        #If first element was positive, add 0 as index
        if i == 0:
            if lst[i] > 0:
                index.append(0)
        #If successive values are negative and positive, i.e indexes switch over, collect the positive index
        if lst[i] < 0 and lst[i+1] > 0:
            index.append(i+1)

    #If index list was empty, all negative characters were encountered, hence add -1 to index
    if len(index) == 0:
        index = [-1]

    return index

print(get_pos_indexes([-1.1, 2.0, 3.0, 4.0, 5.0, -2.0, -3.0, -4.0, 5.5, 6.6, 7.7, 8.8, 9.9]))
print(get_pos_indexes([2.0, 3.0, 4.0, 5.0, -2.0, -3.0, -4.0, 5.5, 6.6, 7.7, 8.8, 9.9]))
print(get_pos_indexes([2.0,1.0,4.0,5.0]))
print(get_pos_indexes([-2.0,-1.0,-4.0,-5.0]))

Выход будет

[1, 8]
[0, 7]
[0]
[-1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...