Как узнать номер элемента на котором находится генератор в питон?
Предположим мне нужно пройтись по списку чисел, и сравнить текущий элемент с последующим, и если текущий элемент больше последующего, то нужно добавить в генерируемый список положительное число, иначе отрицательное. К примеру: Из списка [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()