map on many values


Now imagine you have a very long list. I know this is not such a long list, but I trust you can imagin a long list of numbers. We would like to run some function on each element and then iterate over the results, but what if at one point in the iteration we decide to break out of the loop?

examples/functional/map_with_many_items.py
import sys

def double(n):
    print(f"double {n}")
    return 2 * n

numbers = [1, 4, 2, -1, 23, 12, 5, 6, 34, 143123, 98, 213]

double_numbers = map(double, numbers)
print(double_numbers)
for num in double_numbers:
    print(num)
    if num > 42:
        break

print()
print(sys.getsizeof(numbers))
print(sys.getsizeof(double_numbers))

<map object at 0x7fe5c5270d68>
double 1
2
double 4
8
double 2
4
double -1
-2
double 23
46

160
56

You can see that it did not need to waste time calculating the doubles of all the values, as it was calculating on-demand. You can also see that the object returned from map takes up only 56 bytes. Regardless of the size of the original array.