Вывести первый положительный элемент списка

x = [-3, -5, 4, 2, -2, -6, 5]
for i in x:
    if x[i] > 0:
        print(x[i])

Не могу понять что не правильно и почему выводит результат: введите сюда описание изображения

Если x = [-3, -5, 3, 4, 2, -2, -6, 5]. Тогда выводит: введите сюда описание изображения Как сделать чтобы в первом случае вывело только 4, а во втором 3


Ответы (6 шт):

Автор решения: Kers
x = [-3, -5, 4, 2, -2, -6, 5]
for i in x:
    if i > 0:
        print(i)
        break # Прерывает цикл

i по сути и есть элемент x, а не его индекс. В первой итерации у Вас получается x[-3], во второй x[-5] и тд... Дублирование из за того что x[-5] это 4, и x[2] тоже указывает на 4.

→ Ссылка
Автор решения: Roman
if условие:
    #ваш код
    break

Тогда программа выйдет из цикла и не будет проверять другие елементы

→ Ссылка
Автор решения: Zhihar

а попробуйте так:

x = [-3, -5, 4, 2, -2, -6, 5]
print(list(filter(lambda i: i > 0, x))[0])
→ Ссылка
Автор решения: NykSu

Можно и такой код, как вариант:

lst = [-3, -5, 4, 2, -2, -6, 5]
print([x for x in lst if x > 0][0])

Хоть выше с циклом быстрее выполнится.

→ Ссылка
Автор решения: CrazyElf

Добавлю функционального изврата, раз уж все пишут разные варианты. )

from operator import lt
from functools import partial
lst = [-3, -5, 4, 2, -2, -6, 5]
print(next(filter(partial(lt, 0), lst)))
→ Ссылка
Автор решения: eri

Варианты @Zhihar, @NykSu проходят весь список, а достаточно получить только один первый элемент из генератора:

print(next(filter(lambda i: i > 0, x)))
→ Ссылка