Other Fun Stuff in the itertools Module
We'll cover the following...
import itertoolsprint (list(itertools.product('ABC', '123'))) #①#[('A', '1'), ('A', '2'), ('A', '3'),# ('B', '1'), ('B', '2'), ('B', '3'),# ('C', '1'), ('C', '2'), ('C', '3')]print (list(itertools.combinations('ABC', 2))) #②#[('A', 'B'), ('A', 'C'), ('B', 'C')]
① The itertools.product()
function returns an iterator containing the Cartesian product of two sequences.
② The itertools.combinations()
function returns an iterator containing all the possible combinations of the given sequence of the given length. This is like the itertools.permutations()
function, except combinations don’t include items that are duplicates of other items in a different order. So itertools.permutations('ABC', 2)
will return both ('A', 'B')
and ('B', 'A')
(among others), but itertools.combinations('ABC', 2)
will not return ('B', 'A')
because it is a duplicate of ('A', 'B')
in a different order.
names = list(open('favorite-people.txt', encoding='utf-8')) #①print (names)#['Dora\n', 'Ethan\n', 'Wesley\n', 'John\n', 'Anne\n','Mike\n', 'Chris\n', 'Sarah\n', 'Alex\n', 'Lizzie\n']names = [name.rstrip() for name in names] #②print (names)#['Dora', 'Ethan', 'Wesley', 'John', 'Anne','Mike', 'Chris', 'Sarah', 'Alex', 'Lizzie']names = sorted(names) #③print (names)#['Alex', 'Anne', 'Chris', 'Dora', 'Ethan','John', 'Lizzie', 'Mike', 'Sarah', 'Wesley']names = sorted(names, key=len) #④print (names)#['Alex', 'Anne', 'Dora', 'John', 'Mike','Chris', 'Ethan', 'Sarah', 'Lizzie', 'Wesley']
① This idiom returns a list of the lines in a text file.
② Unfortunately (for this example), the list(open(filename))
idiom also ...