Saturday, 29 April 2023

Generator Vs List in Python

 In Python, there are two main ways to create sequences of values: using a generator or a list. While both have their uses, they have different performance characteristics and memory usage, so it's important to choose the right one for your specific use case.

A generator is a type of iterable, like a list or a tuple, but unlike a list, a generator does not store all the values in memory at once. Instead, it generates the values on-the-fly as they are requested, using a special type of function called a generator function. Generator functions use the yield keyword to return a value, but unlike a regular function that returns a value and then exits, a generator function can be resumed from where it left off, so it can continue generating values until it is done. Because generators don't store all their values in memory, they can be more memory-efficient than lists for large data sets, and can be faster for certain operations.

Here's an example of a simple generator function that generates a sequence of numbers:

def generate_numbers(n):

    for i in range(n):

        yield i

To use this generator, you would typically use it in a loop or with a function like next() to generate values one at a time:

numbers = generate_numbers(5)

print(next(numbers)) # Output: 0

print(next(numbers)) # Output: 1

print(next(numbers)) # Output: 2

print(next(numbers)) # Output: 3

print(next(numbers)) # Output: 4

A list, on the other hand, is a type of sequence that stores all its values in memory at once. Lists can be created using square brackets [] or the list() function. Lists are very versatile and can be modified, sliced, and indexed in various ways. However, because they store all their values in memory at once, they can be memory-intensive for large data sets.

Here's an example of creating a list of numbers:

numbers = [0, 1, 2, 3, 4]

To iterate over a list, you can use a for loop or various other functions and methods:

for number in numbers:


Both generators and lists have their advantages and disadvantages, so choosing the right one depends on the specific use case. If you have a large data set or you only need to generate values one at a time, a generator might be more memory-efficient and faster. If you need to modify the sequence, access its values multiple times, or if the data set is small enough to fit in memory, a list might be more appropriate.


Post a Comment

Codecademy Code Foundations

Popular Posts


Android (23) AngularJS (1) Assembly Language (2) Books (10) C (75) C# (12) C++ (81) Course (1) Data Strucures (4) Downloads (1) Engineering (13) flutter (1) FPL (17) Hadoop (1) HTML&CSS (40) IS (25) Java (89) Leet Code (4) Pandas (1) PHP (20) Projects (19) Python (423) R (69) Selenium Webdriver (2) Software (14) SQL (27)