Как узнать номер элемента на котором находится генератор в питон?

Предположим мне нужно пройтись по списку чисел, и сравнить текущий элемент с последующим, и если текущий элемент больше последующего, то нужно добавить в генерируемый список положительное число, иначе отрицательное. К примеру: Из списка [5, 3, 7, 9, 1, 3, 6], должен получиться список [5, -3, -7, 9, -1, -3, 6], (последний элемент оставить неизменным). Так вот. Как это можно реализовать с помощью генератора?


Ответы (2 шт):

Автор решения: Ara_Bog

Если вы говорите о генераторе как об объекте, то так:

ar = [5, 3, 7, 9, 1, 3, 6]

def createNewAr(ar):
    for i in range(len(ar) - 1):
        if ar[i] > ar[i+1]:
            yield ar[i]
        else:
            yield -ar[i]
    yield ar[-1]

new_ar= createNewAr(ar)

Если вы имеете ввиду генератор списка, то вот:

ar = [5, 3, 7, 9, 1, 3, 6]
ar_new = [ar[i] if ar[i] > ar[i+1] else -ar[i]
          for i in range(len(ar) - 1)]
ar_new.append(ar[-1])
→ Ссылка
Автор решения: Александр
array = [5, 3, 7, 9, 1, 3, 6]
array.append(0)


def main():
    expression_generator = [a if a > b else -a for a, b in zip(array, array[1::])]

    print(expression_generator)

if __name__ == '__main__':
    main()
→ Ссылка