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的Tornado框架实现一个一对一聊天的程序

    使用Python的Tornado框架实现一个一对一聊天的程序

    这篇文章主要介绍了使用Python的Tornado框架实现一个一对一聊天的程序,程序基于WebSocket,需要的朋友可以参考下
    2015-04-04
  • python切割图片的实现示例

    python切割图片的实现示例

    本文主要介绍了python切割图片的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 对python中数据集划分函数StratifiedShuffleSplit的使用详解

    对python中数据集划分函数StratifiedShuffleSplit的使用详解

    今天小编就为大家分享一篇对python中数据集划分函数StratifiedShuffleSplit的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python创建文件时去掉非法字符的方法

    python创建文件时去掉非法字符的方法

    今天小编就为大家分享一篇python创建文件时去掉非法字符的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python中String模块示例详解

    Python中String模块示例详解

    string模块主要包含关于字符串的处理函数,这篇文章主要介绍了Python中String模块示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • python对excel文档去重及求和的实例

    python对excel文档去重及求和的实例

    下面小编就为大家分享一篇python对excel文档去重及求和的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 深入探究python中Pandas库处理缺失数据和数据聚合

    深入探究python中Pandas库处理缺失数据和数据聚合

    在本篇文章中,我们将深入探讨Pandas库中两个重要的数据处理功能:处理缺失数据和数据聚合,文中有详细的代码示例,对我们的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-07-07
  • python中subplot大小的设置步骤

    python中subplot大小的设置步骤

    matploglib能够绘制出精美的图表,有时候我们希望把一组图放在一起进行比较,就需要用到matplotlib中提供的subplot了,这篇文章主要给大家介绍了关于python中subplot大小的设置方法,需要的朋友可以参考下
    2021-06-06
  • python如何构建mock接口服务

    python如何构建mock接口服务

    这篇文章主要介绍了python如何构建mock接口服务,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01
  • python sklearn常用分类算法模型的调用

    python sklearn常用分类算法模型的调用

    这篇文章主要介绍了python sklearn常用分类算法模型的调用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10

最新评论