Python reversed反转序列并生成可迭代对象
英文文档:
reversed(seq)
Returnareverseiterator.seqmustbeanobjectwhichhasa__reversed__()methodorsupportsthesequenceprotocol(the__len__()methodandthe__getitem__()methodwithintegerargumentsstartingat0).
反转序列生成新的可迭代对象
说明:
1.函数功能是反转一个序列对象,将其元素从后向前颠倒构建成一个新的迭代器。
>>>a=reversed(range(10))#传入range对象 >>>a#类型变成迭代器>>>list(a) [9,8,7,6,5,4,3,2,1,0] >>>a=['a','b','c','d'] >>>a ['a','b','c','d'] >>>reversed(a)#传入列表对象 >>>b=reversed(a) >>>b#类型变成迭代器 >>>list(b) ['d','c','b','a']
2.如果参数不是一个序列对象,则其必须定义一个__reversed__方法。
#类型Student没有定义__reversed__方法
>>>classStudent:
def__init__(self,name,*args):
self.name=name
self.scores=[]
forvalueinargs:
self.scores.append(value)
>>>a=Student('Bob',78,85,93,96)
>>>reversed(a)#实例不能反转
Traceback(mostrecentcalllast):
File"",line1,in
reversed(a)
TypeError:argumenttoreversed()mustbeasequence
>>>type(a.scores)#列表类型
#重新定义类型,并为其定义__reversed__方法
>>>classStudent:
def__init__(self,name,*args):
self.name=name
self.scores=[]
forvalueinargs:
self.scores.append(value)
def__reversed__(self):
self.scores=reversed(self.scores)
>>>a=Student('Bob',78,85,93,96)
>>>a.scores#列表类型
[78,85,93,96]
>>>type(a.scores)
>>>reversed(a)#实例变得可以反转
>>>a.scores#反转后类型变成迭代器
>>>type(a.scores)
>>>list(a.scores)
[96,93,85,78]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。