Seems as though
if not mylist[1]: return False
Doesn't work.
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.
if (list. indices. contains(index) && list[index] == value) { // `value` exists in the list at `index` ... }
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
orj
is negative, the index is relative to the end of the string:len(s) + i
orlen(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.
In the EAFP style of Python:
try: mylist[1] except IndexError: print "Index doesn't exist!"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With