国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

python如何實(shí)現(xiàn)反向迭代

2020-01-04 15:34:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例為大家分享了python實(shí)現(xiàn)反向迭代的具體代碼,供大家參考,具體內(nèi)容如下

案例:

       實(shí)現(xiàn)一個(gè)連續(xù)的浮點(diǎn)數(shù)發(fā)生器,FloatRange,根據(jù)給定范圍(start, end) 和步進(jìn)值,產(chǎn)生一些列的浮點(diǎn)數(shù),例如:FloatRange(3,4,0.2),將產(chǎn)生下列序列:

       正向:3.0 3.2 …… 4.0

       反向:4.0 3.8 …… 3.0

如何實(shí)現(xiàn)?

方法1:列表翻轉(zhuǎn)

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

方法2:列表切片

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

方法3: __ reversed__方法

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

如何邏輯整理?

 for循環(huán)正向迭代調(diào)用__iter__方法,反向迭代調(diào)用__reversed__方法,可以定義一個(gè)類,寫(xiě)上這些方法

#!/usr/bin/python3  class FloatRange(object):  def __init__(self, start, end, step):    self.dot = self.__get_dot_num(step)    # 有多少個(gè)小數(shù)點(diǎn)就乘以10的多少次冪,因?yàn)楦↑c(diǎn)數(shù)運(yùn)算不準(zhǔn)確,換算成整形數(shù)進(jìn)行計(jì)算    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):    # 計(jì)算step有多少個(gè)小數(shù)點(diǎn)    if isinstance(step, int):      return step    else:      # 通過(guò)round實(shí)現(xiàn)計(jì)算有多少位小數(shù),首創(chuàng)      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)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁海县| 堆龙德庆县| 泸溪县| 宜兰市| 宝应县| 尉氏县| 石屏县| 白沙| 扎赉特旗| 临湘市| 永仁县| 萍乡市| 若尔盖县| 文安县| 客服| 富源县| 通许县| 仁化县| 鱼台县| 团风县| 德阳市| 斗六市| 文山县| 怀化市| 漳平市| 南木林县| 开江县| 泾阳县| 白城市| 莎车县| 阳高县| 瑞安市| 富顺县| 大厂| 崇州市| 淅川县| 密云县| 肃南| 高邮市| 裕民县| 厦门市|