- Functional Python Programming
- Steven F. Lott
- 239字
- 2021-08-27 19:20:29
Using reversed() to change the order
There are times when we need a sequence reversed. Python offers us two approaches to this: the reversed() function, and slices with reversed indices.
For example, consider performing a base conversion to hexadecimal or binary. The following code is a simple conversion function:
def digits(x: int, b: int) -> Iterator[int]:
if x == 0: return yield x % b for d in digits(x//b, b): yield d
This function uses a recursion to yield the digits from the least significant to the most significant. The value of x%b will be the least significant digits of x in the base b.
We can formalize it as follows:

In many cases, we'd prefer the digits to be yielded in the reverse order. We can wrap this function with the reversed() function to swap the order of the digits:
def to_base(x: int, b: int) -> Iterator[int]:
return reversed(tuple(digits(x, b)))
We can do a similar kind of thing with a slice, such as tuple(digits(x, b))[::-1]. The slice, however, is not an iterator. A slice is a materialized object built from another materialized object. In this case, for such small collections of values, the distinction is minor. As the reversed() function uses less memory, it can be advantageous for larger collections.
- 數據庫系統原理及MySQL應用教程(第2版)
- Mastering Visual Studio 2017
- 數據庫系統教程(第2版)
- Servlet/JSP深入詳解
- Mastering C# Concurrency
- JavaCAPS基礎、應用與案例
- PHP編程基礎與實例教程
- Test-Driven Machine Learning
- Hands-On JavaScript for Python Developers
- 代替VBA!用Python輕松實現Excel編程
- Django實戰:Python Web典型模塊與項目開發
- Node.js 12實戰
- 測試架構師修煉之道:從測試工程師到測試架構師
- Arduino機器人系統設計及開發
- Building Business Websites with Squarespace 7(Second Edition)