認識reversed單詞
reversed 英[rɪ'vɜ:st] 美[rɪ'vɜst]
adj. 顛倒的;相反的;(判決等)撤銷的
v. 顛倒(reverse的過去式和過去分詞);翻轉
help(reversed)
Help on class reversed in module builtins: class reversed(object) | reversed(sequence) -> reverse iterator over values of the sequence | | Return a reverse iterator | | Methods defined here: | | __getattribute__(self, name, /) | Return getattr(self, name). | | __iter__(self, /) | Implement iter(self). | | __length_hint__(...) | Private method returning an estimate of len(list(it)). | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | __next__(self, /) | Implement next(self). | | __reduce__(...) | Return state information for pickling. | | __setstate__(...) | Set state information for unpickling.
reversed的英文解釋
Return a reverse iterator. seq must be an object which has a __reversed__() method or supports the sequence protocol (the __len__() method and the __getitem__() method with integer arguments starting at 0).
reversed()函數的輸入時任意一個序列,返回一份倒序后的序列副本。通常用於for循環需要倒序循環時。
eg:
seq = [1, 2, 3, 4, 5, 6, 7, 8] for item in reversed(seq): print(item, end=" ")
結果:
8 7 6 5 4 3 2 1
reversed()的功能:翻轉對象
- 翻轉函數reversed()調用參數類中的__reversed__()函數。
- 函數功能是反轉一個序列對象,將其元素從后向前顛倒構建成一個新的迭代器
reversed()的應用
應用1: 序列的倒序循環
seq1 = list(range(8)) print("seq1為: {}".format(seq1)) for i in reversed(seq1): print(i, end=' ')
結果:
seq1為: [0, 1, 2, 3, 4, 5, 6, 7] 7 6 5 4 3 2 1 0
seq2 = ['a', 'b', 'c', 'd'] print("seq2為: {}".format(seq2)) for i in reversed(seq2): print(i, end=' ')
結果:
seq2為: ['a', 'b', 'c', 'd'] d c b a
應用2:
如果一個對象不存在__reversed__()方法,那么,reversed()會調用__len__()和__getitem__()生成倒序序列。
class MySeq(): def __len__(self): return 6 def __getitem__(self, index): return 'y{0}'.format(index) for item in reversed(MySeq()): print(item, end=', ')
結果:
y5, y4, y3, y2, y1, y0,
應用3:
如果我們需要定制或者優化倒序過程,我們只需重寫__reversed__()方法。
class MySeq(): def __len__(self): return 6 def __getitem__(self, index): return 'y{0}'.format(index)
class MyReversed(MySeq): def __reversed__(self): return 'hello, bright!' for item in reversed(MyReversed()): # 調用重寫的__reversed__()方法。 print(item, end=' ')
結果:
h e l l o , b r i g h t !
或者:
class MySeq(): def __len__(self): return 6 def __getitem__(self, index): return 'y{0}'.format(index) class MyReversed(MySeq): def __reversed__(self): return reversed('hello, bright!') for item in reversed(MyReversed()): print(item, end=' ')
結果:
! t h g i r b , o l l e h
應用4:
如果reversed()的參數不是一個序列對象,我們應該為該對象定義一個__reversed__方法,這個時候就可以使用reversed()函數了。
class MyScore: def __init__(self, name, *args): self.name = name self.scores = [] for value in args: self.scores.append(value) def __reversed__(self): self.scores = reversed(self.scores) x = MyScore("bright", 66, 77, 88, 99, 100) print('我的名字: {0}, \n我的成績: {1}'.format(x.name, x.scores)) print('我的成績按降序排列:{}'.format(list(reversed(x.scores))))
結果:
我的名字: bright, 我的成績: [66, 77, 88, 99, 100] 我的成績按降序排列:[100, 99, 88, 77, 66]
知識在於點點滴滴的積累,我會在這個路上Go ahead,
有幸看到我博客的朋友們,若能學到知識,請多多關注以及討論,讓我們共同進步,揚帆起航。
后記:打油詩一首
適度鍛煉,量化指標
考量天氣,設定目標
科學鍛煉,成就體標
高效科研,實現學標