在python中想逆序输出列表或字典中的元素可能会用到像 .reverse() self.__reverse()__
reversed(obj) 这些逆序函数,这些函数很类似但用法却略有不同,如果不了解具体的区别可能会导致一些出乎意料的错误。
obj.reversed() :
先来说说obj.reversed()吧,它是由列表或者字典对象来调用,沒有返回值,因为它的作用是将obj对象本身给逆序了,也就是比如list调用.reversed()后它里面的元素就已经是逆序的了,,tuple沒有这个函数
list=[1,2,3,4,5,6]
list.reverse()
print(" {} ".format(list))
运行结果:
self.__reverse()__
和 reversed(obj)
self.__reverse() 和 reversed(obj)都是有返回值的为迭代器类型,他们并没有改变对象本身的值,
三种类型的返回值结果:
list=[1,2,3,4,5,6]
list1=list.reverse()
list2=list.__reversed__()
list3=reversed(list)
print("list1 {} list2 {} list3 {}".format(list1,list2,list3))
reversed()和self.__reverse()__
不同的是,self.__reverse()__
既然是self调用,证明我必须自己是由逆序这个功能的。像tuple就没有__reverse()__,因为这个数据类型就是不可变列表。但reversed()是操纵对象的函数,它可以将tuple中的元素逆序。可以说reserved()面向的面更广,而self.__reverse()__
和obj.reversed()是对象中的方法,只有对象可以逆序才可以调用
比如用reserved(tuple) 可以
tu=(1,2,3,4,5)
for i in reversed(tu):
print(i)
而 tuple调用__reserved()__就不行了
tu=(1,2,3,4,5)
for i in tu.__reversed__():
print(i)
顺便记录一个小知识点:
python中沒有do while语句。。。但可以用while true 加 if 条件判断来代替。