Сделать числа отрицательными
Есть код, который реверсирует ВСЕ числа.
def make_negative(number):
result = [x * -1 for x in number]
return result
Как сделать так, чтобы только положительные числа подверглись реверсии?
Ответы (5 шт):
Автор решения: Артем Торшин
→ Ссылка
Есть такая функция abs(). В вашем случае:
def make_negative(number):
result = [abs(x) * -1 for x in number]
return result
print(make_negative([1,2,4,-12,-2]))
[-1, -2, -4, -12, -2]
Автор решения: n1tr0xs
→ Ссылка
Есть несколько вариантов:
def f1(lst):
return list(map(lambda x: -abs(x), lst))
def f2(lst):
return [-abs(x) for x in lst]
По сути они ничем не отличаются. Также, если вам не нужен будет доступ по индексу lst[5], к примеру, а вы будете использовать их в цикле for, то можно возвращать не списки, а генератор (или объект map), т.к. они занимают меньше памяти
def f1(lst):
return map(lambda x: -abs(x), lst)
def f2(lst):
return (-abs(x) for x in lst)
Автор решения: Виктор Вронский
→ Ссылка
А если надо отбросить отрицательные и вывести только реверс положительных, то
def make_negative(number):
result = [x * -1 for x in number if x > 0]
return result
print(make_negative([1,2,4,-12,-2]))
[-1, -2, -4]
Автор решения: CrazyElf
→ Ссылка
Всё же если следовать заданию буквально, и никак не преобразовывать исходные числа, не подходящие под условие, то можно использовать тернарный оператор:
result = [-x if x > 0 else x for x in number]
Автор решения: Namerek
→ Ссылка
В копилку
result = [x * (-(x > 0) or 1) for x in range(-5, 6)]
# [-5, -4, -3, -2, -1, 0, -1, -2, -3, -4, -5]