Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

This lesson is for members only. Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

Hint: You can adjust the default video playback speed in your account settings.
Hint: You can set your subtitle preferences in your account settings.
Sorry! Looks like there’s an issue with video playback 🙁 This might be due to a temporary outage or because of a configuration issue with your browser. Please see our video player troubleshooting guide to resolve the issue.

Using Python Generators to Get the First Match

00:00 Using Python Generators to Get the First Match. Python generator iterators are memory-efficient iterables that can be used to find the first element in a list or any iterable.

00:13 They’re a core feature of Python being used extensively under the hood. It’s likely you’ve already used generators without even knowing it. The potential issue with generators is that they’re a bit more abstract and, as such, not quite as readable as for loops.

00:29 You do get some performance benefits from generators, but these are often negligible when the importance of readability is taken into consideration. That said, using them can be fun and level up your Python game.

00:44 In Python, you can make a generator in various ways, but in this course, you’ll be working with generator comprehensions.

00:56 Once you’ve defined a generator iterator, you can then call the next() function with the generator as an argument, producing the countries one by one until the countries list is exhausted.

01:06 To find the first element matching a certain criteria in a list, you can add a conditional expression to the generator comprehension, so the resulting iterator will only yield items that match the criteria.

01:18 In the example seen on-screen, you use a conditional expression to generate items based on whether the population attribute is over one hundred million.

01:37 So now the generator will only produce dictionaries with a population attribute of over one hundred million. This means that the first time you call next() with a generator iterator, it will yield the first element that you’re looking for in the list, just like the for loop version.

01:54 Note that you’ll get an exception if you call next() and there’s no match or the generator is exhausted. To prevent this, you can pass in a default argument to next().

02:07 Once the generator is finished producing matches, it will return the default value that’s been passed in. Since you’re returning None, you get no output in the REPL.

02:20 If you hadn’t passed in the default value, you would get a StopIteration exception.

02:30 In terms of readability, a generator isn’t quite as natural as a for loop, so why would you use one for this purpose? Well, in the next section of the course, you’ll be doing a quick performance comparison to find out.

Become a Member to join the conversation.