Возвращает список той же длины, что и 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 шт):
Лучше делать через так:
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
Тут проще вообще списковое сокращение использовать и сделать всё в одну строку, без излишеств:
def elementwise_greater_than(list_l, thresh):
return = [x > thresh for x in list_l]
А у вас в коде сразу несколько ошибок:
- использование переменной
iодновременно и для индекса и для значения - присваивание значения по индексу в пустой список
- знак сравнения выбран не верно, либо условие задачи сформулировано не чётко: "больше" - это
>, а если вы пишете>=, то это "больше или равно" либо "не меньше".
Если вы хотите присваивать по индексу - нужно сначала сделать список нужного размера. Либо вместо присваивания использовать .append, как в другом ответе. Либо использовать списочное сокращение для создания списка, как в моём ответе.