The above code will output []
, and will not result in an IndexError
.
As one would expect, attempting to access a member of a list using an index that exceeds the number of members (e.g., attempting to access list[10]
in the list above) results in an IndexError
. However, attempting to access a slice of a list at a starting index that exceeds the number of members in the list will not result in an IndexError
and will simply return an empty list.
What makes this a particularly nasty gotcha is that it can lead to bugs that are really hard to track down since no error is raised at runtime.
To answer more Python Quizzes, check the ones from The Python Guru here: http://thepythonguru.com/python-guru-quiz/
If you want to explore more, visit our Python edu & tutorials section! Below are some examples:
Another week to bring you the top yield platforms for three of the most prominent…
If you hold a large volume of LEDU tokens above 1 million units and wish…
It’s another week and like always we have to explore the top yield platforms for…
At a time where we’re constantly seeking tools and strategies to simplify our crypto investments,…
As we kick off another week, it's time to explore the top yield platforms for…
We're excited to share that Education Ecosystem was recently featured in an article on Business…
View Comments
Why do you think it is a "gotcha"? You said "give me a list of all the elements of that list whose indices are greater than or equal to ten". And it said "here you are", and gave you the empty list. Why would it raise IndexError? If you ask for a list of elements that don't exist, it is an empty list, of course.
>>> [element for index, element in enumerate(list) if index >= 10]
You don't expect this to raise IndexError, do you? :-)