Ответ 1
Вам просто нужно проверить, находится ли нужный вам индекс в диапазоне 0
и длине списка, например
if 0 <= index < len(list):
он внутренне оценивается как
if (0 <= index) and (index < len(list)):
Итак, это условие проверяет, находится ли индекс в пределах диапазона [0, длина списка).
Примечание. Python поддерживает отрицательную индексацию. Цитирование Python документации,
Если
i
илиj
отрицательно, индекс относится к концу строки:len(s) + i
илиlen(s) + j
заменяется. Но обратите внимание, что -0 все равно 0.
Это означает, что всякий раз, когда вы используете отрицательную индексацию, значение будет добавлено к длине списка, и результат будет использоваться. Таким образом, list[-1]
предоставит вам элемент list[-1 + len(list)]
.
Итак, если вы хотите разрешить отрицательные индексы, то вы можете просто проверить, не превышает ли индекс индекс длины, например этот
if index < len(list):
Другой способ сделать это, кроме IndexError
, как этот
a = []
try:
a[0]
except IndexError:
return False
return True
Когда вы пытаетесь получить доступ к элементу с недопустимым индексом, создается IndexError
. Таким образом, этот метод работает.
Примечание. У метода, упомянутого в вопросе, есть проблема.
if not mylist[1]:
Допустим, что 1
является допустимым индексом для mylist
, и если он возвращает значение Falsy. Тогда not
будет отрицать это, поэтому условие if
будет оцениваться как Truthy. Таким образом, он вернет False
, даже если элемент действительно присутствует в списке.