You just have to check if the index you want is in the range of 0
and the length of the list, like this
if 0 <= index < len(list):
it is actually internally evaluated as
if (0 <= index) and (index < len(list)):
So, that condition checks if the index is within the range [0, length of list).
Note: Python supports negative indexing. Quoting Python documentation,
If i
or j
is negative, the index is relative to the end of the string: len(s) + i
or len(s) + j
is substituted. But note that -0 is still 0.
It means that whenever you use negative indexing, the value will be added to the length of the list and the result will be used. So, list[-1]
would be giving you the element list[-1 + len(list)]
.
So, if you want to allow negative indexes, then you can simply check if the index doesn't exceed the length of the list, like this
if index < len(list):
Another way to do this is, excepting IndexError
, like this
a = []
try:
a[0]
except IndexError:
return False
return True
When you are trying to access an element at an invalid index, an IndexError
is raised. So, this method works.
Note: The method you mentioned in the question has a problem.
if not mylist[1]:
Lets say 1
is a valid index for mylist
, and if it returns a Falsy value. Then not
will negate it so the if
condition would be evaluated to be Truthy. So, it will return False
, even though an element actually present in the list.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…