国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python 如何反方向迭代一個(gè)序列

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

問(wèn)題

你想反方向迭代一個(gè)序列

解決方案

使用內(nèi)置的 reversed() 函數(shù),比如:

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

反向迭代僅僅當(dāng)對(duì)象的大小可預(yù)先確定或者對(duì)象實(shí)現(xiàn)了 __reversed__() 的特殊方法時(shí)才能生效。如果兩者都不符合,那你必須先將對(duì)象轉(zhuǎn)換為一個(gè)列表才行,比如:

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

要注意的是如果可迭代對(duì)象元素很多的話,將其預(yù)先轉(zhuǎn)換為一個(gè)列表要消耗大量的內(nèi)存。

討論

很多程序員并不知道可以通過(guò)在自定義類上實(shí)現(xiàn) __reversed__() 方法來(lái)實(shí)現(xiàn)反向迭代。比如:

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)

定義一個(gè)反向迭代器可以使得代碼非常的高效,因?yàn)樗辉傩枰獙?shù)據(jù)填充到一個(gè)列表中然后再去反向迭代這個(gè)列表。

以上就是Python 如何反方向迭代一個(gè)序列的詳細(xì)內(nèi)容,更多關(guān)于Python 反向迭代的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 剑阁县| 疏勒县| 东明县| 新宾| 原阳县| 敖汉旗| 达孜县| 武威市| 康乐县| 津市市| 惠安县| 如东县| 宣汉县| 田东县| 宜黄县| 改则县| 温泉县| 清丰县| 鸡东县| 永寿县| 武强县| 余姚市| 白玉县| 丹凤县| 白城市| 梁山县| 曲阜市| 修文县| 岚皋县| 西平县| 宁国市| 新晃| 青神县| 武冈市| 漳平市| 永昌县| 三门县| 景宁| 苏尼特右旗| 唐河县| 汶川县|