Возвращает список той же длины, что и L, где значение в индексе i равно True, если L[i] больше порогового значения, и False в противном случае

Не знаю как правильно решить данную задачу,сталкиваюсь с отсутствием индекса в диапозоне.Пробовал корректировать условия проверки,но всё же не могу понять что делаю не так.

IndexError: list index out of range

Возвращает список той же длины, что и list_l, где значение в индексе i равно True, если list_l[i] больше порогового значения, и False в противном случае

def elementwise_greater_than(list_l, thresh):
    new_list = []
    for i in range(len(list_l)):
        if list_l[i] >= thresh:
            i = True
            new_list[i] = i
        else:
            i = False
            new_list[i] = i
        continue
    return new_list 

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

Автор решения: Kiselevsky Dima

Лучше делать через так:

def elementwise_greater_than(list_l, thresh):
    new_list = []
    for i in list_l:
        if i >= thresh:
            new_list.append(True)
        else:
            new_list.append(False)
        continue
    return new_list
→ Ссылка
Автор решения: CrazyElf

Тут проще вообще списковое сокращение использовать и сделать всё в одну строку, без излишеств:

def elementwise_greater_than(list_l, thresh):
    return = [x > thresh for x in list_l]

А у вас в коде сразу несколько ошибок:

  • использование переменной i одновременно и для индекса и для значения
  • присваивание значения по индексу в пустой список
  • знак сравнения выбран не верно, либо условие задачи сформулировано не чётко: "больше" - это >, а если вы пишете >=, то это "больше или равно" либо "не меньше".

Если вы хотите присваивать по индексу - нужно сначала сделать список нужного размера. Либо вместо присваивания использовать .append, как в другом ответе. Либо использовать списочное сокращение для создания списка, как в моём ответе.

→ Ссылка