- 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.
- 在最好的年紀學Python:小學生趣味編程
- Spring技術內幕:深入解析Spring架構與設計
- Java 9 Programming Blueprints
- Production Ready OpenStack:Recipes for Successful Environments
- Practical Windows Forensics
- 云計算通俗講義(第3版)
- 精通Scrapy網絡爬蟲
- Python機器學習經典實例
- HTML5+CSS3網頁設計
- Access 2010數據庫應用技術(第2版)
- Creating Mobile Apps with jQuery Mobile(Second Edition)
- Unity&VR游戲美術設計實戰
- OpenCV with Python By Example
- 零基礎PHP從入門到精通
- 從零開始學UI設計·基礎篇