Форум сайта python.su
0
В результате расчётов получается некоторый список, часть значений в нём отрицательные, часть положительные. На основании этих данных нужно получить либо новый список либо преобразовать существующий так, чтобы отрицательные числа заменялись на нули.
Из всех методов которые существуют для работы со списками не нашёл того, который осуществляет замену значения списка в зависимости от логического условия.
Для того чтоб было понятно, что имеется ввиду написал нерационально с кучей лишних строк, так как прошолся вручную по каждому числу. Уверен что есть способ то же самое сделать в пару строк. Подскажите плиз.
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()
Отредактировано (Май 4, 2011 20:40:13)
Офлайн
0
lst = [-3, -2, 1, 2]
lst_new = [i if i > 0 else 0 for in lst]
Офлайн
0
после копи пэйста питон выдал ошибки, но зато чуть видоизменил предложеный код:
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()
Отредактировано (Май 4, 2011 21:52:35)
Офлайн
18
Holden ну так опечатка же
lst = [-3, -2, 1, 2]
lst_new = [i if i > 0 else 0 for i in lst]
print(lst_new)
Офлайн
32
>>> lst = [-3, -2, 1, 2]
>>> map(lambda x:max(0,x),lst)
[0, 0, 1, 2]
Офлайн
20
>>> map(functools.partial(max, 0), lst)
..bw
Офлайн
0
Всем мерси!
Офлайн