久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

Python 如何反方向迭代一個序列

瀏覽:3日期:2022-07-16 10:06:02

問題

你想反方向迭代一個序列

解決方案

使用內置的 reversed() 函數,比如:

>>> a = [1, 2, 3, 4]>>> for x in reversed(a):... print(x)...4321

反向迭代僅僅當對象的大小可預先確定或者對象實現了 __reversed__() 的特殊方法時才能生效。如果兩者都不符合,那你必須先將對象轉換為一個列表才行,比如:

# Print a file backwardsf = open(’somefile’)for line in reversed(list(f)): print(line, end=’’)

要注意的是如果可迭代對象元素很多的話,將其預先轉換為一個列表要消耗大量的內存。

討論

很多程序員并不知道可以通過在自定義類上實現 __reversed__() 方法來實現反向迭代。比如:

class Countdown: def __init__(self, start): self.start = start # Forward iterator def __iter__(self): n = self.start while n > 0: yield n n -= 1 # Reverse iterator def __reversed__(self): n = 1 while n <= self.start: yield n n += 1for rr in reversed(Countdown(30)): print(rr)for rr in Countdown(30): print(rr)

定義一個反向迭代器可以使得代碼非常的高效,因為它不再需要將數據填充到一個列表中然后再去反向迭代這個列表。

以上就是Python 如何反方向迭代一個序列的詳細內容,更多關于Python 反向迭代的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 池州市| 辽阳县| 阳江市| 商洛市| 祥云县| 军事| 宜兴市| 开封县| 犍为县| 皋兰县| 仙居县| 宝丰县| 绥化市| 唐山市| 吉木萨尔县| 新野县| 江西省| 宜兰市| 台山市| 房山区| 湘乡市| 泾阳县| 桦南县| 泸水县| 张北县| 仪征市| 镇安县| 佛坪县| 抚松县| 尤溪县| 曲靖市| 长顺县| 武冈市| 菏泽市| 嵊州市| 夏津县| 朝阳县| 微博| 呈贡县| 新昌县| 威远县|