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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。