python如何?反向迭代,python實現反向

來源:互聯網
上載者:User

python如何?反向迭代,python實現反向

本文執行個體為大家分享了python實現反向迭代的具體代碼,供大家參考,具體內容如下

案例:

       實現一個連續的浮點數發生器,FloatRange,根據給定範圍(start, end) 和步進值,產生一些列的浮點數,例如:FloatRange(3,4,0.2),將產生下列序列:

       正向:3.0 3.2 …… 4.0

       反向:4.0 3.8 …… 3.0

如何??

方法1:列表翻轉

#!/usr/bin/python3 l = [1, 2, 3, 4, 5, 6]l.reverse()for i in l:  print(i)   # 出現問題,改變了原列表,不可取

方法2:列表切片

#!/usr/bin/python3 l = [1, 2, 3, 4, 5, 6]for i in l[::-1]:  print(i)   # 得到了和原列表等大的列表,某種程度上很浪費

方法3: __ reversed__方法

#!/usr/bin/python3 l = [1, 2, 3, 4, 5, 6] for i in reversed(l):  print(i)

如何邏輯整理?

 for迴圈正向迭代調用__iter__方法,反向迭代調用__reversed__方法,可以定義一個類,寫上這些方法

#!/usr/bin/python3  class FloatRange(object):  def __init__(self, start, end, step):    self.dot = self.__get_dot_num(step)    # 有多少個小數點就乘以10的多少次冪,因為浮點數運算不準確,換算成整形數進行計算    self.start = start*pow(10, self.dot)    self.end = end*pow(10, self.dot)    self.step = step*pow(10, self.dot)       def __get_dot_num(self, step):    # 計算step有多少個小數點    if isinstance(step, int):      return step    else:      # 通過round實現計算有多少位小數,首創      for dot in range(len(str(step))+1):        if step == round(step, dot):          return dot   def __iter__(self):    # 正向迭代    while self.start <= self.end:      yield self.start/pow(10, self.dot)      self.start += self.step   def __reversed__(self):    # 反向迭代    while self.end >= self.start:      yield self.end/pow(10,self.dot)      self.end -= self.step if __name__ == '__main__':     float_num_1 = FloatRange(2, 5, 0.1)  float_num_2 = FloatRange(2, 5, 0.1)     # 正向迭代  for i in float_num_1:    print(i)       print('_'*60)     # 反向迭代  for x in reversed(float_num_2):    print(x)

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.