亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2020年07月28日 10:17:37   作者:看云  
這篇文章主要介紹了Python 如何反方向迭代一個序列,文中講解非常細致,代碼幫助大家更好理解和學習,感興趣的朋友可以了解下

問題

你想反方向迭代一個序列

解決方案

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

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

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

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

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

討論

很多程序員并不知道可以通過在自定義類上實現(xiàn) __reversed__() 方法來實現(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 += 1

for rr in reversed(Countdown(30)):
  print(rr)
for rr in Countdown(30):
  print(rr)

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

以上就是Python 如何反方向迭代一個序列的詳細內(nèi)容,更多關(guān)于Python 反向迭代的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論