{ Useful Python Modules. }

Objectives

By the end of this chapter, you should be able to:

  • Distinguish between the different types of imports
  • Give examples of advanced data types provided by the collections module

Now that you know how to import, let's examine a few useful modules:

Random

The random module is quite useful for generating random values of all kinds:

import random

random.randint(1,10) # generate a number between 1 and 10
random.randrange(4) # generate between 0 and 3
random.random() # generate a number between 0 and 1

Here's an example pulling just a single function, the choice function, which grabs an element at random from a list:

from random import choice as c

c([1,2,3,4,5]) # run this line several times, you should see different elements get returned

Math

The math module provides access to many mathematical functions, including helpers for rounding, constants like e and pi, and trigonometric functions.

import math

math.e # 2.718281828459045
math.pi # 3.141592653589793
math.floor(2.2) # 2
math.ceil(2.2) # 3
math.sqrt(16) # 4
math.pow(2,10) # 1024.0

Collections

This is a built in module that provides alternatives to Python's built-in containers like dict, list, set, and tuple. Take a look at each one of these and see what they do.

Counter

from collections import Counter

l = [1,1,2,3,3,4,4,5,5]
Counter(l) # see what this returns!

string = "aweosakjdsaldwjdwq"
Counter(string)

s = 'this is such a nice nice nice thing that is nice!'

c = Counter(s.split())

# Counter({'a': 1,
#          'is': 2,
#          'nice': 3,
#          'nice!': 1,
#          'such': 1,
#          'that': 1,
#          'thing': 1,
#          'this': 1})

c.items() # list of element,count tuples 
c.clear() # clear all values
c.values() # see all values

Defaultdict

from collections import defaultdict

regular_dict = dict(first=1)
regular_dict['first'] # 1
regular_dict['second'] # KeyError!

def default_value():
    return "nothing"

d = defaultdict(default_value)
d['nice'] = "cool"
d['nice'] # "cool"
d['whoaaa'] # "nothing"

OrderedDict

An ordered dictionary remembers the order in which key-value pairs were added.

from collections import OrderedDict

d = {}
d['one'] = 1
d['two'] = 2
d['three'] = 3
d['four'] = 4

for k,v in d.items():
    print(k,v) # no order!

od = OrderedDict()
od['one'] = 1
od['two'] = 2
od['three'] = 3
od['four'] = 4

for k,v in od.items():
    print(k,v) # order!

namedtuple

from collections import namedtuple

t = (1,2,3)
t[1] = 2

Person = namedtuple('Person', 'first_name last_name fav_color')
elie = Person('Elie', 'Schoppik', 'purple')
elie.fav_color # 'purple'

When you're ready, move on to Debugging and Modules Exercises

Continue