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

 更新时间:2020年07月28日 10:17:37   作者:看云  
这篇文章主要介绍了Python 如何反方向迭代一个序列,文中讲解非常细致,代码帮助大家更好理解和学习,感兴趣的朋友可以了解下

问题

你想反方向迭代一个序列

解决方案

使用内置的 reversed() 函数,比如:

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

反向迭代仅仅当对象的大小可预先确定或者对象实现了 __reversed__() 的特殊方法时才能生效。如果两者都不符合,那你必须先将对象转换为一个列表才行,比如:

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

要注意的是如果可迭代对象元素很多的话,将其预先转换为一个列表要消耗大量的内存。

讨论

很多程序员并不知道可以通过在自定义类上实现 __reversed__() 方法来实现反向迭代。比如:

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)

定义一个反向迭代器可以使得代码非常的高效,因为它不再需要将数据填充到一个列表中然后再去反向迭代这个列表。

以上就是Python 如何反方向迭代一个序列的详细内容,更多关于Python 反向迭代的资料请关注脚本之家其它相关文章!

相关文章

  • Python读写Excel文件方法介绍

    Python读写Excel文件方法介绍

    这篇文章主要介绍了Python读写Excel文件方法介绍,本文讲解了xlrd、xlwt、xlutils等类库的使用,需要的朋友可以参考下
    2014-11-11
  • Python实现将数据库一键导出为Excel表格的实例

    Python实现将数据库一键导出为Excel表格的实例

    下面小编就为大家带来一篇Python实现将数据库一键导出为Excel表格的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Keras搭建Mask R-CNN实例分割平台实现源码

    Keras搭建Mask R-CNN实例分割平台实现源码

    这篇文章主要为大家介绍了Keras搭建Mask R-CNN实例分割平台实现源码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python实现决策树分类算法

    python实现决策树分类算法

    这篇文章主要为大家详细介绍了python实现决策树分类算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Python通用验证码识别OCR库ddddocr的安装使用教程

    Python通用验证码识别OCR库ddddocr的安装使用教程

    dddd_ocr是一个用于识别验证码的开源库,又名带带弟弟ocr,下面这篇文章主要给大家介绍了关于Python通用验证码识别OCR库ddddocr的安装使用教程,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • python rpyc客户端调用服务端方法的注意说明

    python rpyc客户端调用服务端方法的注意说明

    这篇文章主要介绍了python rpyc客户端调用服务端方法的注意说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Python中操作符重载用法分析

    Python中操作符重载用法分析

    这篇文章主要介绍了Python中操作符重载用法,较为详细的分析了Python操作符重载的功能,使用方法与相关注意事项,需要的朋友可以参考下
    2016-04-04
  • Python截取字符串的简单方法实例

    Python截取字符串的简单方法实例

    字符串切片也就是截取字符串,取子串,下面这篇文章主要给大家介绍了关于Python截取字符串的简单方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • NumPy 数组属性的具体使用

    NumPy 数组属性的具体使用

    本文主要介绍了NumPy 数组属性的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 利用Python抓取行政区划码的方法

    利用Python抓取行政区划码的方法

    做项目的时候会需要用到各个行政区划的代码,最近就碰巧遇到有这个需求,于是就上网搜了一下,测试后分享给大家,这篇文章就给大家分享了利用Python抓取行政区划码的示例代码,有需要的朋友们可以参考借鉴,下面跟着小编一起去学习学习吧。
    2016-11-11

最新评论