Use of itertools library in Python standard library, pythonitertools
Preface
Because there have not been many things recently, I want to write some technical articles to share with you, and also sort out the knowledge that I have accepted for a while, this is the truth.
Many people are committed to writing Python code more Pythonic, which is more compliant and easy to read. Second, Pythonic code is generally executed more efficiently. Today, I will introduce the Python system library itertools. I won't talk much about it below. Let's take a look at the detailed introduction.
Itertools Library
The iterator (generator) is a commonly used and useful data structure in Python. Compared with the list, the biggest advantage of the iterator is that it is used on demand for latency computing, this improves the development experience and running efficiency. In Python 3, operations such as map and filter do not return a list but an iterator.
Even so, the iterator we usually use is about range, and the list object is converted into an iterator object through the iter function, at this time, we should be playing the role itertools today.
Use itertools
Most of the functions in itertools return various iterator objects. Many of these functions can be achieved only by writing a lot of code at ordinary times, but are less efficient. After all, they are system libraries.
Itertools. accumulate
In short, it is accumulation.
>>> import itertools>>> x = itertools.accumulate(range(10))>>> print(list(x))[0, 1, 3, 6, 10, 15, 21, 28, 36, 45]
Itertools. chain
Connect multiple lists or iterators.
>>> x = itertools.chain(range(3), range(4), [3,2,1])>>> print(list(x))[0, 1, 2, 0, 1, 2, 3, 3, 2, 1]
Itertools. combinations
List or all combinations in which the specified number of elements in the generator are not repeated
>>> x = itertools.combinations(range(4), 3)>>> print(list(x))[(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)]
Itertools. combinations_with_replacement
Allow repeated element combinations
>>> x = itertools.combinations_with_replacement('ABC', 2)>>> print(list(x))[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
Itertools. compress
Filter elements by truth table
>>> x = itertools.compress(range(5), (True, False, True, True, False))>>> print(list(x))[0, 2, 3]
Itertools. count
It is a counter. You can specify the start position and step size.
>>> x = itertools.count(start=20, step=-1)>>> print(list(itertools.islice(x, 0, 10, 1)))[20, 19, 18, 17, 16, 15, 14, 13, 12, 11]
Itertools. cycle
List and iterator specified by Loop
>>> x = itertools.cycle('ABC')>>> print(list(itertools.islice(x, 0, 10, 1)))['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A']
Itertools. dropwhile
Discard the list and elements before the iterator according to the true value function
>>> x = itertools.dropwhile(lambda e: e < 5, range(10))>>> print(list(x))[5, 6, 7, 8, 9]
Itertools. filterfalse
Retain elements whose true values are False
>>> x = itertools.filterfalse(lambda e: e < 5, (1, 5, 3, 6, 9, 4))>>> print(list(x))[5, 6, 9]
Itertools. groupby
Groups elements based on the value of grouping functions.
>>> x = itertools.groupby(range(10), lambda x: x < 5 or x > 8) >>> for condition, numbers in x: ... print(condition, list(numbers)) True [0, 1, 2, 3, 4] False [5, 6, 7, 8] True [9]
Itertools. islice
The previously used function slices the iterator.
>>> x = itertools.islice(range(10), 0, 9, 2)>>> print(list(x))[0, 2, 4, 6, 8]
Itertools. permutations
Generates all sorts of elements of a specified number (sequence-related)
>>> x = itertools.permutations(range(4), 3)>>> print(list(x))[(0, 1, 2), (0, 1, 3), (0, 2, 1), (0, 2, 3), (0, 3, 1), (0, 3, 2), (1, 0, 2), (1, 0, 3), (1, 2, 0), (1, 2, 3), (1, 3, 0), (1, 3, 2), (2, 0, 1), (2, 0, 3), (2, 1, 0), (2, 1, 3), (2, 3, 0), (2, 3, 1), (3, 0, 1), (3, 0, 2), (3, 1, 0), (3, 1, 2), (3, 2, 0), (3, 2, 1)]
Itertools. product
(Product) that generates multiple lists and iterators)
>>> x = itertools.product('ABC', range(3))>>>>>> print(list(x))[('A', 0), ('A', 1), ('A', 2), ('B', 0), ('B', 1), ('B', 2), ('C', 0), ('C', 1), ('C', 2)]
Itertools. repeat
Generate an iterator with a specified number of elements
>>> x = itertools.repeat(0, 5)>>> print(list(x))[0, 0, 0, 0, 0]
Itertools. starmap
Similar to map
>>> x = itertools.starmap(str.islower, 'aBCDefGhI')>>> print(list(x))[True, False, False, False, True, True, False, True, False]
Itertools. takewhile
In contrast to dropwhile, elements are retained until the true value of the function is false.
>>> x = itertools.takewhile(lambda e: e < 5, range(10))>>> print(list(x))[0, 1, 2, 3, 4]
Itertools. tee
I am not very familiar with this function. It seems that it is to generate a specified number of iterators.
>>> x = itertools.tee(range(10), 2)>>> for letters in x:... print(list(letters))...[0, 1, 2, 3, 4, 5, 6, 7, 8, 9][0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Itertools.zip _ longest
Similar to zip, but the long list and iterator length are subject
>>> x = itertools.zip_longest(range(3), range(5))>>> y = zip(range(3), range(5))>>> print(list(x))[(0, 0), (1, 1), (2, 2), (None, 3), (None, 4)]>>> print(list(y))[(0, 0), (1, 1), (2, 2)]
Conclusion
I would like to summarize it here, but to be honest, the features and libraries of Python must be used in a variety of ways to be proficient. In the end, it can be easily achieved.
Summary
The above is all the content of this article. I hope the content of this article will help you in your study or work. If you have any questions, please leave a message, thank you for your support.