![]() |
|
[Tut] How to Retrieve a Single Element from a Python Generator - Printable Version +- Sick Gaming (https://sickgaming.net) +-- Forum: Programming (https://sickgaming.net/forum-76.html) +--- Forum: Python (https://sickgaming.net/forum-83.html) +--- Thread: [Tut] How to Retrieve a Single Element from a Python Generator (/thread-100006.html) |
[Tut] How to Retrieve a Single Element from a Python Generator - xSicKxBot - 09-30-2022 How to Retrieve a Single Element from a Python Generator 5/5 – (2 votes) This article will show you how to retrieve a single generator element in Python. Before moving forward, let’s review what a generator does. Quick Recap Generators Definition Generator: A generator is commonly used when processing vast amounts of data. This function uses minimal memory and produces results in less time than a standard function. Definition Code: yieldCode: yield Definition Code: next()Code: StopIterationProblem Formulation and Solution Overview Question: How would we write code to retrieve and return a single element from a Code: GeneratorWe can accomplish this task by one of the following options:
Method 1: Use a Generator and random.randint() This example uses a Code: GeneraCode: orCode: random.randint()Let’s say we want to start a weekly in-house lottery called Code: LottoOne ).The code below will generate and return one (1) random element (an integer): the winning number for the week. Code: import random def LottoOne(): num = random.randint(1, 50) yield print(f'The Winning Number for the Week is: {num}!') gen = LottoOne()
next(gen)The first line in the above code imports the random library. This library allows the generation of random numbers using the Code: random.randint()On the following line, an instance of Code: LottoOneCode: genCode: <generator object LottoOne at 0x00000236B9686880>Since we only want the first randomly generated number, the code calls the Code: next()Code: genCode: The Winning Number for the Week is: 44 Recommended Tutorial: An Introduction to Python ClassesMethod 2: Use a Generator and islice() This example uses a generator and the Code: itertools.islice()If you know what number you need to return from a generator, it can be referenced directly, as shown in the code below. Code: import itertools
from itertools import islice gen = (x for x in range(1, 50))
res = next(itertools.islice(gen, 2, None))
print(res)The first two (2) lines in the above code import the Code: itertoolsCode: islice()The following line creates a generator comprehension using the Code: range()Code: genIf output to the terminal, an object similar to that shown below will display. Code: <generator object at 0x00000285D4DB68F0>Then, the Code: next()Code: itertools.islice()This function is then passed three (3) arguments:
The results save to Code: resCode: 3The value of 3 can be found at index 2 in Code: genMethod 3: Use a List, Generator Comprehension and slicing This example uses a list, generator comprehension and slicing to return a single element. Code: gen = (i for i in range(1, 50))
res = list(gen)[3]
print(res)The first line in the above code creates a Generator Comprehension using the Code: range()Code: genIf output to the terminal, an object similar to that shown below will display. Code: <generator object at 0x00000295D4DB78F0>The following line converts the object to a list. Slicing is then applied to retrieve the listelement at position three (3). The results save to Code: resCode: 4The value of 4 can be found at index 3 in Code: genMethod 4: Use a Generator and a For Loop This example creates a Generator whose content is output to the terminal until a specific number is found. Code: def my_func(): yield 10 yield 20 yield 30 gen = my_func() for item in gen: if item == 20: print(item) breakThis first line of the above code declares the function Code: my_func()Code: yieldNext, an object is declared and saved to Code: genIf output to the terminal, an object similar to that shown below will display. Code: <generator object my_func at 0x0000022DE93D59A0>The following line instantiates a Code: forCode: yieldCode: genCode: itemThis value is output to the terminal, and the loop terminates via the Code: breakCode: 20Summary This article has provided four (4) ways to retrieve a single element from a Code: GeneratorGood Luck & Happy Coding! Programming Humor – Python [i]“I wrote 20 short programs in Python yesterday. It was wonderful. Perl, I’m leaving you.” — xkcd[/i]
|