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:
We’re thrilled to announce an exciting opportunity for you to win not one but two…
Acquiring practical skills is crucial for career advancement and personal growth. Education Ecosystem stands out…
Artificial Intelligence (AI) has been making significant strides in various industries, and the software development…
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…
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? :-)