Найти - Пользователи
Полная версия: Как заменять значения в списке с помощью итераторов?
Начало » Python для новичков » Как заменять значения в списке с помощью итераторов?
1
Holden
В результате расчётов получается некоторый список, часть значений в нём отрицательные, часть положительные. На основании этих данных нужно получить либо новый список либо преобразовать существующий так, чтобы отрицательные числа заменялись на нули.
Из всех методов которые существуют для работы со списками не нашёл того, который осуществляет замену значения списка в зависимости от логического условия.
Для того чтоб было понятно, что имеется ввиду написал нерационально с кучей лишних строк, так как прошолся вручную по каждому числу. Уверен что есть способ то же самое сделать в пару строк. Подскажите плиз.

def main():
lst = [-3, -2, 1, 2]
if lst[0]>0:
lst1 = beta[0]
else:
lst1 = 0
if lst[1]>0:
lst2 = beta[1]
else:
lst2 = 0
if lst[2]>0:
lst3 = beta[2]
else:
lst3 = 0
if lst[3]>0:
lst4 = beta[3]
else:
lst4 =0

lst_new = [lst1, lst2, lst3, lst4]
print(lst_new)
if __name__ == "__main__": main()
Результат должен получиться
Zubchick
lst = [-3, -2, 1, 2]
lst_new = [i if i > 0 else 0 for in lst]
Holden
после копи пэйста питон выдал ошибки, но зато чуть видоизменил предложеный код:

def main():
lst = [-3, -2, 1, 2]
lst_new = [lst[i] if lst[i]> 0 else 0 for i in range(4)]
print(lst_new)
if __name__ == "__main__": main()
и получил то что надо, поэтому спасибо!
sp3
Holden ну так опечатка же
lst = [-3, -2, 1, 2]
lst_new = [i if i > 0 else 0 for i in lst]
print(lst_new)
o7412369815963
>>> lst = [-3, -2, 1, 2]
>>> map(lambda x:max(0,x),lst)
[0, 0, 1, 2]
bw
>>> map(functools.partial(max, 0), lst)

..bw
Holden
Всем мерси!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB