Уведомления

Группа в Telegram: @pythonsu

#1 Май 4, 2011 20:38:56

Holden
От:
Зарегистрирован: 2011-05-04
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Как заменять значения в списке с помощью итераторов?

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

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)

Офлайн

#2 Май 4, 2011 21:24:03

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Как заменять значения в списке с помощью итераторов?

lst = [-3, -2, 1, 2]
lst_new = [i if i > 0 else 0 for in lst]



Офлайн

#3 Май 4, 2011 21:50:35

Holden
От:
Зарегистрирован: 2011-05-04
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Как заменять значения в списке с помощью итераторов?

после копи пэйста питон выдал ошибки, но зато чуть видоизменил предложеный код:

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)

Офлайн

#4 Май 4, 2011 22:19:25

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Как заменять значения в списке с помощью итераторов?

Holden ну так опечатка же

lst = [-3, -2, 1, 2]
lst_new = [i if i > 0 else 0 for i in lst]
print(lst_new)



Офлайн

#5 Май 5, 2011 09:10:44

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Как заменять значения в списке с помощью итераторов?

>>> lst = [-3, -2, 1, 2]
>>> map(lambda x:max(0,x),lst)
[0, 0, 1, 2]

Офлайн

#6 Май 5, 2011 10:06:32

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Как заменять значения в списке с помощью итераторов?

>>> map(functools.partial(max, 0), lst)

..bw



Офлайн

#7 Май 5, 2011 14:26:10

Holden
От:
Зарегистрирован: 2011-05-04
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Как заменять значения в списке с помощью итераторов?

Всем мерси!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version