有些時候,程序需要進行反向遍歷,此時可通過 reversed() 函數,該函數可接收各種序列(元組、列表、區間等)參數,然后返回一個“反序排列”的法代器,該函數對參數本身不會產生任何影響。
在交互式解釋器中,測試該函數的過程如下:
>>> a = range(10) >>> [x for x in reversed(a)] [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
從上面代碼可以看出,通過 reversed() 函數得到了 range(10) 的反轉序列;但如果再次訪問 a,將會看到 a 並沒有發生改變:
>>> a range(0, 10)
reversed() 當然也可以對列表、元組進行反轉。例如如下測試代碼:
>>> b = ['a', 'fkit', 20, 3.4, 50] >>> [x for x in reversed(b)] [50, 3.4, 20, 'fkit', 'a']
前面提到過,str 其實也是序列,因此也可通過該函數實現在不影響字符串本身的前提下,對字符串進行反序遍歷。例如如下測試代碼:
>>> c = 'Hello,Charlie' >>> [x for x in reversed(c)] ['e', 'i', 'l', 'r', 'a', 'h', 'C', ',', 'o', 'l', 'l', 'e', 'H']