反序迭代乙個序列

2021-08-22 11:46:44 字數 762 閱讀 8988

在列表中,如果我們要將列表反向迭代通常使用reverse()。但這個方法有個缺陷就是會改變列表。

因此,我們推薦使用reversed(),它會返回乙個迭代器。這裡,我們可以實現__reversed__()解決反向

迭代問題。

class floatrange:

def __init__(self,start,end,step):

self.start = start

self.end = end

self.step = step

def __iter__(self): #正向迭代

t = self.start

while round(t,2)<=round(self.end,2):

yield t

t+=self.step

def __reversed__(self): #反向迭代

t= self.end

while round(t,2)>=round(self.start,2):

yield t

t-=self.step

if __name__ == '__main__':

for x in floatrange(3.0,4.0,10.0):

print(x)

for x in reversed(floatrange(3.0,4.0,10.0)): #第一次遍歷取走了3.0 所以此時只剩()4.0,10.0)

print(x)

如何反序迭代乙個序列

在列表中,如果我們要將列表反向迭代通常使用 reverse 但這個方法有個缺陷就是會改變列表。因此,我們推薦使用 reversed 它會返回乙個迭代器。這裡,我們可以實現 reversed 解決反向迭代問題 以列表為例 lst a c 1 a c 3 去重 print list set lst 反序...

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

問題 你想反方向迭代乙個序列 解決方案 使用內建的 reversed 函式,比如 a 1,2,3,4 for x in reversed a print x 432 1反向迭代僅僅當物件的大小可預先確定或者物件實現了 reversed 的特殊方法時才能生效。如果兩者都不符合,那你必須先將物件轉換為乙...

求乙個數的反序數

package com.laodai author tony 求任意整數的反序數 例如乙個數字54321,反序數就是12345 分析 求反序數,我們需要將乙個個的數字給拆分開。然後再 進行組合就可以達到目的。例如分離出各位的1,那麼我們只需要將54321除以10求他的餘數 就可以了。54321除以1...