Форум сайта python.su
0
здрасте форумчане! простите з аглупый вопрос, я тут новенький.
хочу цикл сделать для списка чтобы убивать его отрицательные элементы. вот пишу функцию, но он выдает ошибку
во первых он хочет, чтобы 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
Офлайн
568
rows[i]*0
Офлайн
568
потом он еще пишет, что данный вид цикла невозможен, надо использовать a.any() или a.all()Вау!

Отредактировано FishHook (Окт. 14, 2014 13:39:13)
Офлайн
0
FishHookрад, что насмешил. вы не поможете?
Шутка месяца, однако!
Офлайн
47
sshkrvда, поэтому в i будет элемент списка, а не индекс
это ж питон)
Офлайн
568
sshkrvиспользуйте filter или списковые выражения
вы не поможете?
Офлайн
0
for i in rows: #перебираем элементы списка if i<0: #проверяем отрицательный ли элемент ind = rows.index(i) #определяем позицию элемента в списке rows[ind] = rows[ind]*0
Отредактировано Punk_Joker (Окт. 14, 2014 14:47:12)
Офлайн
9
>>> a = [-4, 4, 2, -4, 2, -4] >>> filter((lambda x: x >= 0), a) [4, 2, 2]
Отредактировано alexsis (Окт. 14, 2014 14:59:56)
Офлайн
Судя по вопросу он хочет заменить отрицательные числа нулем в самом списке, сохранить количество элементов. Если это так, то
for n, i in enumerate(lst): if i < 0: lst[n] = 0
Офлайн
0
row = [max(x,0) for x in row]
Офлайн