时间:2021-05-22
问题
你想反方向迭代一个序列
解决方案
使用内置的 reversed() 函数,比如:
>>> a = [1, 2, 3, 4]>>> for x in reversed(a):... print(x)...4321反向迭代仅仅当对象的大小可预先确定或者对象实现了 __reversed__() 的特殊方法时才能生效。如果两者都不符合,那你必须先将对象转换为一个列表才行,比如:
# Print a file backwardsf = 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 += 1for rr in reversed(Countdown(30)): print(rr)for rr in Countdown(30): print(rr)定义一个反向迭代器可以使得代码非常的高效,因为它不再需要将数据填充到一个列表中然后再去反向迭代这个列表。
以上就是Python 如何反方向迭代一个序列的详细内容,更多关于Python 反向迭代的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
python中迭代器和iter()函数迭代器为类序列对象提供了一个类序列的接口。python的迭代无缝地支持序列对象,而且它还允许程序员迭代非序列类型,包括用户
双十二申请时有正反方向,积极申请的是正反方向,被邀请的是反方向,很多小伙伴不知道这两者有什么大的实质性差异,双十二正反方向哪个好1、双十二正反方向哪个好1、正反
Q:淘宝商家如何报考双十二场外主题活动?报考时间何时截至A:报名流程1.反方向邀请:对于产品对商家开展反方向邀请报考2.独立报考:被反方向邀请报考的商家可在独立
问题你想同时迭代多个序列,每次分别从一个序列中取一个元素。解决方案为了同时迭代多个序列,使用zip()函数。比如:>>>xpts=[1,5,4,2,10,7]>
Python列表具有内置的list.sort()方法,可以在原地修改列表。还有一个sorted()内置的函数从迭代构建一个新的排序列表。在本文中,我们将探讨使用