Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 14, 2014 13:34:31

sshkrv
Зарегистрирован: 2014-10-14
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка списка на неотрицательность

здрасте форумчане! простите з аглупый вопрос, я тут новенький.
хочу цикл сделать для списка чтобы убивать его отрицательные элементы. вот пишу функцию, но он выдает ошибку
во первых он хочет, чтобы rows в логическом выражении был int или bool , но мне надо без чтобы он не менял значение, то есть int, к-рый будет округлять не пойдет, а потом он еще пишет, что данный вид цикла невозможен, надо использовать a.any() или a.all()

def zero(rows):
    for i in rows: 
     if rows[i] < 0:
       rows[i]=rows[i]*0
    return rows

как лучше реализовать эту фунцкию? помогите пожуалуйста! не понимаю почему не получается, это ж питон)
спасибо!

Офлайн

#2 Окт. 14, 2014 13:38:06

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

проверка списка на неотрицательность

rows[i]*0
Шутка месяца, однако!



Офлайн

#3 Окт. 14, 2014 13:38:46

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

проверка списка на неотрицательность

потом он еще пишет, что данный вид цикла невозможен, надо использовать a.any() или a.all()
Вау!
Копипасту ошибки в студию!



Отредактировано FishHook (Окт. 14, 2014 13:39:13)

Офлайн

#4 Окт. 14, 2014 14:03:44

sshkrv
Зарегистрирован: 2014-10-14
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка списка на неотрицательность

FishHook
Шутка месяца, однако!
рад, что насмешил. вы не поможете?

Офлайн

#5 Окт. 14, 2014 14:28:02

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

проверка списка на неотрицательность

sshkrv
это ж питон)
да, поэтому в i будет элемент списка, а не индекс

Офлайн

#6 Окт. 14, 2014 14:43:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

проверка списка на неотрицательность

sshkrv
вы не поможете?
используйте filter или списковые выражения



Офлайн

#7 Окт. 14, 2014 14:45:42

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

проверка списка на неотрицательность

 for i in rows:                    #перебираем элементы списка
    if i<0:                                              #проверяем отрицательный ли элемент
        ind = rows.index(i)                       #определяем позицию элемента в списке
        rows[ind] = rows[ind]*0            

Кажется у вас проблемы даже с базовыми знаниями языка, советую почитать учебник или краткие уроки хотябы.

P.S. Это правильная реализация вашего варианта, хотя все можно сделать горазно красивее.



Отредактировано Punk_Joker (Окт. 14, 2014 14:47:12)

Офлайн

#8 Окт. 14, 2014 14:59:31

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

проверка списка на неотрицательность

>>> a = [-4, 4, 2, -4, 2, -4]
>>> filter((lambda x: x >= 0), a)
[4, 2, 2]

Отредактировано alexsis (Окт. 14, 2014 14:59:56)

Офлайн

#9 Окт. 14, 2014 16:01:45

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

проверка списка на неотрицательность

Судя по вопросу он хочет заменить отрицательные числа нулем в самом списке, сохранить количество элементов. Если это так, то

for n, i in enumerate(lst):
    if i < 0:
        lst[n] = 0

Офлайн

#10 Окт. 14, 2014 19:24:29

Ermak
Зарегистрирован: 2013-06-30
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка списка на неотрицательность

row = [max(x,0) for x in row]

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version