Python reversed()改变顺序

Python 使用reversed()函数改变顺序,有时需要反转序列。Python提供了两种实现方式:使用reversed()函数或者使用反序下标值。

例如,假设需要把一个数字转换为16进制数或者2进制数,下面是一个简单的转换函数:

def digits(x: int, b: int) -> Iterator[int]:
    if x == 0: return
    yield x % b
    for d in digits(x // b, b):
        yield d

该函数使用递归从最低有效位向最高有效位依次返回计算结果,x % b的值是以b为基底的x值的最低有效位。
上述算法可表示如下:

Python 使用reversed()函数改变顺序

多数情况下,我们希望返回的数值以反序输出。把上面函数的结果包裹在reversed()函数中,就可以改变输出各位数字的顺序了。

def to_base(x: int, b: int) -> Iterator[int]:
    return reversed(tuple(digits(x, b)))

 reversed()函数返回的是可迭代对象,但它的参数必须是序列。函数将源序列中的元素以反序依次返回。

也可以用类似于tuple(digits(x, b))[::-1]的方式实现相同的反序效果,但切片不是可迭代对象,而是从实例化对象上变换而来的实例化对象。这里用到的集合较小,所以两种实现方法的区别不大。对于大的数据集合,使用reversed()函数的实现方法消耗内存更少。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程