Book Image

Functional Python Programming

By : Steven F. Lott, Steven F. Lott
Book Image

Functional Python Programming

By: Steven F. Lott, Steven F. Lott

Overview of this book

Table of Contents (23 chapters)
Functional Python Programming
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Writing higher-order mappings and filters


Python's two built-in higher-order functions, map() and filter(), generally handle almost everything we might want to throw at them. It's difficult to optimize them in a general way to achieve higher performance. We'll look at functions of Python 3.4, such as imap(), ifilter(), and ifilterfalse(), in Chapter 8, The Itertools Module.

We have three largely equivalent ways to express a mapping. Assume that we have some function, f(x), and some collection of objects, C. We have three entirely equivalent ways to express a mapping; they are as follows:

  • The map() function:

    map(f, C)
  • The generator expression:

    (f(x) for x in C)
  • The generator function:

    def mymap(f, C):
        for x in C:
            yield f(x)
    mymap(f, C)

Similarly, we have three ways to apply a filter function to a collection, all of which are equivalent:

  • The filter() function:

    filter(f, C)
  • The generator expression:

    (x for x in C if f(x))
  • The generator function:

    def myfilter(f, C):
        for x in C:
            if...